我想记录哪些高级(即C ++非内联汇编程序)函数或宏可用于比较和交换(CAS)原子基元......
例如,x86上的WIN32在_InterlockedCompareExchange
标题中有一系列函数<_intrin.h>
。
答案 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)