读取/写入bool值保证是C/C++中的一条指令

Pab*_*run 0 c c++ types

我无法想象一个架构会在多个指令中设计对其最小数据类型的访问,但也许流水线有一些我不考虑的问题?

sbi*_*sbi 11

C++标准无法保证是否bool在单个操作中读取和写入对象,因为这会对底层硬件施加约束,C和C++会尝试将其最小化.

但请注意,在多线程场景中,读取/写入数据类型是否为原子的问题只是问题的一半.另一半是对某些地址的更改是否反映在所有缓存中(即不同内核本地的缓存),以及它们是否以相同顺序反映在所有线程中.为此你需要记忆障碍.

  • @Steve号`sizeof(bool)`可以是任何东西. (3认同)