当前位置 : 主页 > 编程语言 > c++ >

c – bool读/写操作可以在x86上不是原子操作吗?

来源:互联网 收集:自由互联 发布时间:2021-06-23
参见英文答案 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而另一个可以在特
参见英文答案 > 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而另一个可以在特定时间切换它.我个人认为这应该是原子的,因为C中的sizeof(bool)是1个字节而你不是部分读/写字节但我想100%肯定.

那么是或否?

编辑:

同样为了将来参考,同样适用于int?

这完全取决于你对“原子”这个词的真正含义.

你的意思是“最终值将一次更新”(是的,在x86上,绝对保证一个字节值 – 以及任何正确对齐的值,至少64位),或“如果我将其设置为真(或在我设置之后,没有其他线程会读取不同的值“(这不是很确定 – 你需要一个”锁定“前缀来保证).

网友评论