13

我想记录哪些高级(即 C++ 不是内联汇编器)函数或宏可用于比较和交换(CAS)原子原语......

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

4

7 回答 7

17

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

atomic_compare_exchange() 

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

于 2008-09-30T05:21:44.917 回答
9

glib 是 Linux 和 Unix 系统上的通用系统库(但也支持 Windows 和 Mac OS X),定义了几个原子操作,包括g_atomic_int_compare_and_exchangeg_atomic_pointer_compare_and_exchange

于 2008-09-30T08:18:32.043 回答
6

GCC 也有一些内置的原子访问

于 2008-09-30T06:24:32.080 回答
2

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

于 2008-09-30T05:29:33.070 回答
2

MacOS X 有OSAtomic.h

于 2008-09-30T06:01:03.323 回答
2

已经有一系列关于这个主题的工作组论文提议对 C++ 标准库进行更改。WG N2427C++ 原子类型和操作)是最新的,它为待定标准的第 29 节——原子操作库做出了贡献。

于 2009-11-07T23:15:08.023 回答
1

java也有这个CAS操作

这里

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

于 2008-09-30T06:35:30.637 回答