我正在使用原子(双)比较和交换指令实现无锁机制,例如 cmpxchg16b
我目前正在汇编中编写它,然后将其链接。但是,我想知道是否有办法让编译器自动为我执行此操作?例如,用“原子”包围代码块并让它弄清楚如何在底层处理器架构中将代码实现为原子指令(或者如果底层架构不支持它,则在编译时生成错误)?
PS我知道gcc有一些内置的(至少对于CAS)
http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins