c – bool读/写操作可以在x86上不是原子操作吗?
发布时间:2020-12-16 09:14:09 所属栏目:百科 来源:网络整理
导读:参见英文答案 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个 假
参见英文答案 >
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位),或“如果我将其设置为真(或在我设置之后,没有其他线程会读取不同的值“(这不是很确定 – 你需要一个”锁定“前缀来保证). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |