题
我正在使用原子(双)比较和交换指令实现无锁机制,例如cmpxchg16b
我目前正在汇编中编写此内容,然后将其链接进来。但是,我想知道是否有办法让编译器自动为我执行此操作?例如用“原子”包围代码块,并让它弄清楚如何在底层处理器架构中将代码实现为原子指令(或者如果底层架构不支持,则在编译时生成错误)?
附:我知道 gcc 有一些内置函数(至少对于 CAS 来说)
http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins
其他提示
有C ++的未来 “的C ++ 0x” 标准将支持原子操作&C - 参见例如 http://www.open-std.org /JTC1/sc22/wg21/docs/papers/2007/n2427.html 一个合理thorought讨论。直到所述即将到来的标准得到批准和广泛实施,当然,有没有办法跨越编译器来获得这样的功能“便携”;如果你有兴趣在超越GCC编译器的具体,也许你可以专门开辟关于他们的另一个问题。
不隶属于 StackOverflow