gpt4 book ai didi

c++ - 对共享的 std::unordered_map 线程只写是否安全?

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:33 27 4
gpt4 key购买 nike

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

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

这个线程安全吗?

在我当前的实现中,我有 8 个线程以上述方式写入单个互斥 std::unordered_map。互斥锁显然会减慢进程(填充了将近 10,000 个键),所以我想知道我是否需要互斥锁。

谢谢大家!

最佳答案

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

关于c++ - 对共享的 std::unordered_map 线程只写是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54465466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com