参见英文答案 Why is integer assignment on a naturally aligned variable atomic on x86?5个 Can modern x86 hardware not store a single byte to memory?6个 假设我们有两个线程,一个是在循环中读取bool而另一个可以在特
> Can modern x86 hardware not store a single byte to memory? 6个
假设我们有两个线程,一个是在循环中读取bool而另一个可以在特定时间切换它.我个人认为这应该是原子的,因为C中的sizeof(bool)是1个字节而你不是部分读/写字节但我想100%肯定.
那么是或否?
编辑:
同样为了将来参考,同样适用于int?
这完全取决于你对“原子”这个词的真正含义.你的意思是“最终值将一次更新”(是的,在x86上,绝对保证一个字节值 – 以及任何正确对齐的值,至少64位),或“如果我将其设置为真(或在我设置之后,没有其他线程会读取不同的值“(这不是很确定 – 你需要一个”锁定“前缀来保证).