高级比较和交换(CAS)功能?
时间:2020-03-06 14:54:29 来源:igfitidea点击:
我想说明比较和交换(CAS)原子基元可以使用哪些高级(即C ++而不是内联汇编器)函数或者宏...
例如,x86上的WIN32在<_intrin.h>
标头中具有一系列函数'_InterlockedCompareExchange`。
解决方案
我将让其他人列出各种平台特定的API,但为了将来在C ++ 09中提供参考,我们将获得
atomic_compare_exchange()
在新的"原子操作库"中进行操作。
在Solaris上有" atomic.h"(即<sys / atomic.h>)。
MacOS X具有OSAtomic.h
GCC也有一些内置的原子访问权限。
Java也有此CAS操作
看这里
有实际的用途,例如在多处理器系统中使用的无锁哈希表
glib是Linux和Unix系统上的通用系统库(但Windows和Mac OS X也支持),它定义了几个原子操作,包括g_atomic_int_compare_and_exchange和g_atomic_pointer_compare_and_exchange。
关于此主题,已经有一系列工作组论文提出对C ++标准库的更改。 WG N2427(C ++原子类型和操作)是最新的,它对未决标准的第29节"原子操作库"做出了贡献。