大家好,又见面了,我是你们的朋友全栈君。
无锁编程主要是通过一系列原子操作实现。
原子操作:
1. Read-Modify-Write(RMW)操作
Win32上的_InterlockedIncrement
and InterlockedDecrement,iOS
上的OSAtomicAdd32
以及C++11
中的std::atomic<int>::fetch_add
。需要注意的是,C++11
的原子标准不保证其在每个平台上的实现都是无锁的,因此最好要清楚你的平台和工具链的能力。你可以调用std::atomic<>::is_lock_free
来确认一下
。
不同的CPU
系列支持RMW
的方式也是不同的。例如,PowerPC
和ARM
提供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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138610.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...