【发布时间】:2010-09-14 04:33:17
【问题描述】:
我想记录一下可用于比较和交换 (CAS) 原子原语的高级(即 C++ 而非内联汇编器)函数或宏...
例如,x86 上的 WIN32 在 <_intrin.h> 标头中有一系列函数 _InterlockedCompareExchange。
【问题讨论】:
标签: c++ multithreading multicore atomic
我想记录一下可用于比较和交换 (CAS) 原子原语的高级(即 C++ 而非内联汇编器)函数或宏...
例如,x86 上的 WIN32 在 <_intrin.h> 标头中有一系列函数 _InterlockedCompareExchange。
【问题讨论】:
标签: c++ multithreading multicore atomic
GCC 也有一些 built-ins for atomic accesses。
【讨论】:
已经有一系列关于这个主题的工作组论文提议对 C++ 标准库进行更改。 WG N2427(C++ 原子类型和操作)是最新的,它对待定标准的第 29 节——原子操作库做出了贡献。
【讨论】:
glib 是 Linux 和 Unix 系统上的通用系统库(但也支持 Windows 和 Mac OS X),定义了 several atomic operations,包括 g_atomic_int_compare_and_exchange 和 g_atomic_pointer_compare_and_exchange。
【讨论】:
【讨论】:
MacOS X 有OSAtomic.h
【讨论】:
在 Solaris 上有“atomic.h”(即<sys/atomic.h>)。
【讨论】:
我会让其他人列出各种特定于平台的 API,但为了将来在 C++09 中参考,您将获得
atomic_compare_exchange()
新的“原子操作库”中的操作。
【讨论】: