怎样实现无锁线程同步

并发程序如何正确有效保护共享数据:同步

不难得出 Obstruction-free 是 Non-blocking synchronization 中性能最差的,而 Wait-free 性能是最好的,但实现难度也是最大的,因此 Lock-free 算法开始被重视,并广泛运用于当今正在运行的程序中,比如 linux 内核。

一般采用原子级的 read-modify-write 原语来实现 Lock-Free 算法,其中 LL 和 SC 是 Lock-Free 理论研究领域的理想原语,但实现这些原语需要 CPU 指令的支持,非常遗憾的是目前没有任何 CPU 直接实现了 SC 原语。根据此理论,业界在原子操作的基础上提出了著名的 CAS(Compare - And - Swap)操作来实现 Lock-Free 算法,Intel 实现了一条类似该操作的指令:cmpxchg8。 

CAS无锁式同步机制

高并发情况下怎样实现无锁编程

思路: 

参考文献:

CAS 无锁式同步机制

高并发情况下怎样尽量实现无锁编程

透过 Linux 内核看无锁编程

C++多线程并发(五)---原子操作与无锁编程

CAS原子操作实现无锁及性能分析

猜你喜欢

转载自blog.csdn.net/haimianjie2012/article/details/112394651