高级比较和交换(CAS)功能?

时间:2008-09-30 05:16:49

标签: c++ multithreading multicore atomic

我想记录哪些高级(即C ++非内联汇编程序)函数或宏可用于比较和交换(CAS)原子基元......

例如,x86上的WIN32在_InterlockedCompareExchange标题中有一系列函数<_intrin.h>

7 个答案:

答案 0 :(得分:17)

我会让其他人列出各种特定于平台的API,但是为了将来在C ++ 09中的参考,你将获得

atomic_compare_exchange() 

在新的“原子操作库”中进行操作。

答案 1 :(得分:9)

glib,Linux和Unix系统上的常见系统库(但在Windows和Mac OS X上也受支持),定义several atomic operations,包括 g_atomic_int_compare_and_exchange g_atomic_pointer_compare_and_exchange

答案 2 :(得分:6)

GCC也有一些built-ins for atomic accesses

答案 3 :(得分:2)

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

答案 4 :(得分:2)

MacOS X有OSAtomic.h

答案 5 :(得分:2)

有一系列关于此主题的工作组论文提议对C ++标准库进行更改。 WG N2427 C ++原子类型和操作)是最新的,它有助于第29条 - 原子操作库 - 待定标准。

答案 6 :(得分:1)

java也有这个CAS操作

请参阅here

这有实际用途,例如多处理器系统中使用的lock-free hashtable