gpt4 book ai didi

c++ - std::map 上的哪些操作是线程安全的?

转载 作者:IT老高 更新时间:2023-10-28 22:33:35 24 4
gpt4 key购买 nike

假设我有:

stl::map<std::string, Foo> myMap;

下面的函数线程安全吗?

myMap["xyz"] ?

即我想要这个在许多线程之间共享的巨大只读映射;但我不知道即使搜索它是否是线程安全的。


一切都先写入一次。

然后,多个线程从中读取。

我正在尝试避免使用锁,以使其尽可能快。 (yaya 可能过早的优化我知道)

最佳答案

C++11 要求所有声明为 const 的成员函数对于多个阅读器都是线程安全的。

调用 myMap["xyz"] 不是线程安全的,因为 std::map::operator[] 未声明为 const。调用 myMap.at("xyz") 是线程安全的,因为 std::map::at 被声明为 const

关于c++ - std::map 上的哪些操作是线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170541/

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