所以我正在阅读http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html,并且发现了这个:
type __sync_and_and_fetch (type *ptr, type value, ...)
type __sync_xor_and_fetch (type *ptr, type value, ...)
type __sync_nand_and_fetch (type *ptr, type value, ...)
These builtins perform the operation suggested by the name, and return the new value. That is,
{ *ptr op= value; return *ptr; }
{ *ptr = ~*ptr & value; return *ptr; } // nand
这段代码是字面意思吗?或者只是用c语法解释gcc在原子上做什么?如果这是直接翻译,有人可以解释它是如何原子的吗?
答案 0 :(得分:1)
没有。代码就是为了说明函数的运作方式。
原子函数不是用c编写的,而是用每种架构的汇编语言编写的。由于某些体系结构没有实现原子操作的必要指令,因此并非所有操作都在每个体系结构上都有效。