C 对 int 的读写是原子性的吗?
问题涉及 C 中整数读写操作的原子性。原子性确保操作作为一个不可分割的单元完成,确保过程中不会发生中断。
这个问题的答案取决于系统的架构。在 IA32 等处理器上,对整数的对齐写入通常是原子的。然而,未对齐的写入可能不是原子的,具体取决于所使用的缓存系统。如果内存驻留在单个缓存行中,则原子性得以维持;
此外,CPU 和 RAM 之间的总线宽度也会影响原子性。对于较旧的处理器(例如具有 16 位总线的 8086),对齐的 16 位写入是原子的,而在具有 8 位总线的 8088 上无法保证相同的操作。
对于 C/ C 程序中,将共享值声明为易失性至关重要。这可以防止优化器假设变量不会在线程内修改,从而确保始终读取实际值。
以上是C 整数读写总是原子的吗?的详细内容。更多信息请关注PHP中文网其他相关文章!