gpt4 book ai didi

c++ - 从多个线程更新对应于 unordred_map 中不同现有键的值

转载 作者:行者123 更新时间:2023-11-30 05:10:37 27 4
gpt4 key购买 nike

我有一个无序的 map ,如下所示:

unordered_map<string, MyClass*> idToMyClassMap;

现在我明白了,我无法在没有同步的情况下从多个线程对该映射执行插入/删除等操作。但是我可以用我将使用的最大可能条目预填充这个映射,我将使用一个预先知道的字符串键列表和 MyClass 的所有 nullptr。当我真的想“插入”到这个 map 时,我将遍历 map ,找到哪个键是 nullptr 并使用它。当我删除时,我会再次将值设置为 nullptr。

这行得通吗?

最佳答案

是的,这在您不会使自己受制于竞争条件的意义上是可行的 - 假设您不从多个线程修改相同的元素。

find 是容器成员函数的一个罕见例子,它没有被标记为 const(因为它返回可修改的迭代器)但仍然可以安全地从多个线程同时调用.

要获得更多关于容器线程安全的信息,我强烈建议记住这个页面:http://en.cppreference.com/w/cpp/container

关于c++ - 从多个线程更新对应于 unordred_map 中不同现有键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597688/

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