在x86架构上,c-bool的读写操作能否构成非原子性长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计304个文字,预计阅读时间需要2分钟。
参与英文问答,探讨以下问题:
1.Why is integer assignment on a naturally aligned variable atomic on x86?
2.Can modern x86 hardware not store a single byte to memory?
3.假设我们有两个线程,一个在循环中读取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位),或“如果我将其设置为真(或在我设置之后,没有其他线程会读取不同的值“(这不是很确定 – 你需要一个”锁定“前缀来保证).
本文共计304个文字,预计阅读时间需要2分钟。
参与英文问答,探讨以下问题:
1.Why is integer assignment on a naturally aligned variable atomic on x86?
2.Can modern x86 hardware not store a single byte to memory?
3.假设我们有两个线程,一个在循环中读取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位),或“如果我将其设置为真(或在我设置之后,没有其他线程会读取不同的值“(这不是很确定 – 你需要一个”锁定“前缀来保证).

