繁体   English   中英

仅写到共享的std :: unordered_map线程安全吗?

[英]Is write-only to a shared std::unordered_map thread safe?

假设我有一个已初始化但为空的std :: unordered_map,还有两个同时要填充它的线程。 这两个线程将仅写入映射,并且在完成两个线程之前,不会从映射中读取任何内容。

此外,这两个线程将永远不会对映射中的相同键进行操作。 例如,假设线程1将填充键“ A”至“ M”,而线程2将同时填充键“ N”至“ Z”。

这个线程安全吗?

在当前的实现中,我有8个线程以上述方式写入单个互斥的std :: unordered_map。 互斥体显然会减慢该过程的速度(大约有10,000个键被填充),所以我想知道我是否甚至需要互斥体。

谢谢大家!

不,这不是线程安全的。 std::unordered_map类不提供任何特殊的线程安全性保证,只是所有标准类默认提供的相同级别的线程安全性。 这意味着一个线程以任何方式访问结构而另一线程正在或可能正在修改它是不安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM