你需要锁定只阅读

时间:2013-05-13 19:44:29

标签: c++ multithreading

我想知道,假设多个线程正在访问单个静态容器(boost :: unordered_map),如果多个线程只从中读取数据,则不需要锁定对容器的访问。并且没有写作

1 个答案:

答案 0 :(得分:7)

当多个线程只读取并且不执行写入操作时,您不需要同步访问。

C ++ 11标准的第1.10段定义了与数据竞争相关的冲突操作:

  

如果其中一个修改了内存位置(1.7)而另一个修改了另一个,则两个表达式评估会发生冲突   访问或修改相同的内存位置。

当然,按照1.10 / 21:

  

如果程序的执行包含数据竞争,如果它在不同的线程中包含两个冲突的动作,   其中至少有一个不是原子的,也不会发生在另一个之前。 [...]