无锁编程 汇总


无锁编程主要是通过一系列原子操作实现。

原子操作:

1.   Read-Modify-WriteRMW)操作

Win32上的_InterlockedIncrement and InterlockedDecrement,iOS上的OSAtomicAdd32以及C++11中的std::atomic<int>::fetch_add。需要注意的是,C++11的原子标准不保证其在每个平台上的实现都是无锁的,因此最好要清楚你的平台和工具链的能力。你可以调用std::atomic<>::is_lock_free来确认一下

不同的CPU系列支持RMW的方式也是不同的。例如,PowerPCARM提供load-link/store-conditional指令,这实际上是允许你实现你自定义的底层RMW操作。常用的RMW操作就已经足够了。

2. CAS (Compare-And-Swap loop), also a spinlock


cmpxchg  and InterlockedCompareExchange().


简介:http://m.blog.csdn.net/blog/sahusoft/9210029


全面介绍: http://hi.baidu.com/widebright/item/b4328f3af96c9c49033edcca

你可能感兴趣的:(无锁编程,cmpxchg)