C++ std::map - 如果一个线程写入而另一个线程始终使用不同的密钥读取,则线程安全吗?

C++ std::map - thread safe if one thread writes and another reads with always different keys?

线程 A 使用键 C

写入 std::map

线程 B 使用键 D

从 std::map 中读取

如果一直保证key不重叠,这个线程安全吗?

由于std::map在内部使用了树结构,我可以想象在它被变异时读取它可能会有问题。

如果std::map不行,std::unordered_map会更好吗?

  • 如果你写的意思是改变一个已经存在的值 entry 与键 C 关联,那么答案是(我相信)YES
  • 如果您的意思是(可能)插入新元素(或删除它们),那么答案肯定是

虽然不是权威来源,www.cplusplus.com 通常都有一个部分介绍每个函数的潜在数据竞争。