gpt4 book ai didi

c++ - 为什么 map 在 C++ 中不是多线程安全的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:26:53 25 4
gpt4 key购买 nike

我在尝试解决代码中的并发问题时遇到了这个问题。在原来的代码中,我们只使用一个唯一锁来锁定对一个STL map缓存的写操作。但是对缓存的读操作没有限制。所以我在考虑为读操作添加一个共享锁,并为写操作保留唯一锁。但有人告诉我,由于 map 本身存在的一些内部缓存问题,在 map 上进行多线程处理是不安全的。

谁能详细解释一下原因吗?内部缓存有什么作用?

最佳答案

std::map的实现都必须满足通常的保证:如果你所做的一切都被阅读了,那么就不需要外部同步,但是一旦一个线程修改,所有访问都必须同步。

我不清楚“共享锁”是什么意思;没有标准中有这样的东西。但是如果有任何一个线程在写,您必须确保没有其他线程可以同时读取。(可以使用像 Posix 的 pthread_rwlock 这样的东西,但是标准中没有类似的东西,至少我不能找到副手。)

关于c++ - 为什么 map 在 C++ 中不是多线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18384363/

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