老哥们请教个基础问题, c/c++ 对基础数据类型的赋值是原子操作吗?

查看 90|回复 4
作者:CrazyRain0001   
前景提要
之前我写代码同步多线程访问时,基础数据类型都加的有 atomic 关键字,后来领导看到了说基础数据类型不加也是原子操作。
今天面试时,面试官说基数数据类型访问不是原子的,而且和编译器架构无关。
我的理解
应该加 atomic 关键字,但在现代 x86 等架构的 cpu 上对 bool ,int 类型的操作是原子的,或者说视同原子的。

原子, 类型, atomic, 编译器

xtreme1   
https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.html
8.1.1 Guaranteed Atomic Operations
mtrec   
面试官是对的 atomic 之后是原子的 里面还涉及更深一层的 memory order
“在现代 x86 等架构的 cpu 上对 bool ,int 类型的操作是原子的,或者说视同原子的”
不对 在多核多线程情况下 每个核都有自己的独占的寄存器/L1/L2 cache 不能保证原子性
billlee   
是原子的,原子意味着着写一个 memory word 不会出现高位写入完成,而低位没完成写入的情况
inhzus   
不用 atomic 有可见性问题
您需要登录后才可以回帖 登录 | 立即注册

返回顶部