【发布时间】:2012-06-05 12:13:11
【问题描述】:
阅读 C++11 的草稿我对第 1.7.3 条感兴趣:
一个内存位置要么是一个标量类型的对象,要么是一个最大的相邻位域序列,它们都具有非零宽度。 ... 两个执行线程 (1.10) 可以更新和访问单独的内存位置,而不会相互干扰。
此子句是否保护与硬件相关的竞争条件,例如:
- 在两个总线事务中更新内存的未对齐数据访问(内存撕裂)?
- 系统内存单元中有不同的对象,例如一个 32 位字中的两个 16 位有符号整数,并且单独对象的每次独立更新都需要写入整个内存单元(内存冲突)?
【问题讨论】:
-
@HansPassant:从我的快速阅读来看,这个问题似乎与线程之间共享对象的可见性更相关,我在这里询问由更新不同对象引起的内存冲突。
标签: c++ multithreading thread-safety c++11