高层次比较和交换(CAS)的功能呢?(High-level Compare And Swap (CA

2019-07-20 20:49发布

我想记录什么高级别(即C ++不内联汇编)函数或宏可用于比较和交换(CAS)的原子基元...

例如,WIN32在x86具有家庭功能的_InterlockedCompareExchange<_intrin.h>头。

Answer 1:

我让别人列出各种特定平台的API,但对于C ++ 09日后参考,你会得到

atomic_compare_exchange() 

在新的“原子操作库”操作。



Answer 2:

巧舌如簧,在Linux和Unix系统中的常见系统库(也支持Windows和Mac OS X),定义了几个原子操作 ,包括g_atomic_int_compare_and_exchangeg_atomic_pointer_compare_and_exchange。



Answer 3:

GCC有一些内置插件的原子访问 ,太。



Answer 4:

在Solaris有“atomic.h中”(即在<sys / atomic.h中> )。



Answer 5:

MacOS X的有OSAtomic.h



Answer 6:

已经有一系列的关于这个问题建议改变的C ++标准库工作组的论文。 WG N2427 (C ++原子类型和操作 )是最新的,这有助于第29条- 原子操作库 -待处理的标准。



Answer 7:

Java有此CAS操作,也

看这里

这是你的实际用途,如无锁哈希表在多处理器系统中使用



文章来源: High-level Compare And Swap (CAS) functions?