gpt4 book ai didi

C++:一个作者/多个读者访问 unordered_map 线程是否安全?

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

我想构建一个 unordered_map,它具有来自一个写入器和多个读取线程的并发访问。作者只会插入一对,不会删除或更新任何插入的内容。这个线程安全吗?我可以将插入操作视为原子操作吗?我对我的代码进行了多次测试,没有发现崩溃或不正确的结果。

谢谢!

最佳答案

不,这不是线程安全的。您必须确保在您修改 unoredered_map 时没有人在阅读它。例如,如果由于 insert 而需要重新 HashMap ,那么您可以尝试读取正在修改的数据,即使它是不同的元素。

规则是:如果您有多个线程访问的共享数据,并且其中至少有一个是写入器,则您必须进行同步。


这并不是说您需要在阅读时屏蔽所有读者。您可以使用 std::shared_mutex允许多个读者同时读取,但当作者需要写入时,它将阻止所有读者。

关于C++:一个作者/多个读者访问 unordered_map 线程是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44635678/

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