例如,考虑使用Splay树实现的std :: map。这种树结构是可变的,每次访问地图进行读取时都会发生变化。当地图是常量时,谁必须保证并发读数的隔离,是由用户代码还是地图实现?
答案 0 :(得分:4)
提问者知道如果你有线程写入集合,用户必须管理同步锁定。
问题似乎是标准是否可以保证线程安全,如果同时线程只读取集合。
我不确定旧的C ++标准是否对任何操作都有任何线程安全保证,但是新的标准(注释已在23.2.2中给出)。实际上,大多数供应商现在确保并发读取中的线程安全性,尽管事实上集合中包含的对象内的并发性显然需要由用户处理。
以同样的方式,您可以在STL集合上使用读写锁。
这些是关于堆栈溢出的相关问题:
答案 1 :(得分:0)
答案 2 :(得分:-1)
std::*
不保证任何线程安全。