pau*_*546 3 c++ multithreading pointers thread-safety
我找不到答案,但这是一个简单的问题:
两个线程在没有锁或任何其他恶作剧的情况下同时读取c ++中用户定义对象的指针值是否安全?
是.实际上同时读取任何值(内置类型)是安全的.
如果某个值与使用它的某个其他线程同时修改,则只能发生数据争用.标准的主要陈述是:
甲数据争在§1.10/ 21限定:
程序的执行包含数据竞争,如果它在不同的线程中包含两个冲突的动作,其中至少有一个不是原子的,并且都不会在另一个之前发生.
在§1.10/ 4中定义冲突的地方:
如果其中一个修改内存位置(1.7)而另一个访问或修改相同的内存位置,则两个表达式评估会发生冲突.
因此,您必须在这些读取和任何写入之间使用适当的同步.