pcd*_*gio 0 c++ unordered-map c++11
假设我有一个初始化但空的std :: unordered_map,以及两个将同时填充它的线程.这两个线程只会写入地图,在完成两个线程之前,不会从地图中读取任何内容.
此外,两个线程将永远不会在地图中的相同键上操作.例如,假设线程1将填充键"A"到"M",并且线程2将同时填充键"N"到"Z".
这个线程安全吗?
在我当前的实现中,我有8个线程以上述方式写入单个互斥的std :: unordered_map.互斥体显然会减慢进程(有近10,000个密钥被填充),所以我想知道我是否需要互斥锁.
谢谢大家!
不,这不是线程安全的.本std::unordered_map类不提供任何特殊的线程安全保证,只是线程安全,所有的标准类提供默认的相同的普通水平.这意味着一个线程以任何方式访问结构是不安全的,而另一个线程正在或可能正在修改它.
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |