gcc - gcc 提供的原子内置函数实际上是否已转换为示例代码,或者只是为了说明目的?

标签 gcc atomic

所以我在读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

这段代码是字面意思吗?或者只是为了解释 gcc 使用类似 c 的语法原子地做什么?如果这是直接翻译,有人可以解释它是如何原子的吗?

最佳答案

没有。该代码只是为了说明函数如何运行。

原子函数不是用 C 语言编写的,而是用每个体系结构的汇编语言编写的。由于某些架构没有实现原子操作所需的指令,因此并非所有操作在每种架构上都有效。

关于gcc - gcc 提供的原子内置函数实际上是否已转换为示例代码,或者只是为了说明目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435981/

相关文章:

c++ - GCC/Windows DLLs/C++ STL 前端有什么改进吗?

c++ - 为什么 sqrt() 在没有为 int 定义的 int 变量上工作正常?

c - C中的原子参数执行顺序

java - volatile 关键字原子性

haskell - 如何在 Haskell 中使用线程安全的共享变量

java - 在64位JVM上是双原子的读写吗?

c++ - gcc下编译报错

gcc - armv7生成的ELF文件,armv6生成的.o文件,同时使用-march=armv6,为什么?

c++ - enable_if + disable_if 组合引起模棱两可的调用