我boost::unordered_map<const std::string, std::list<TypeA> >
在性能关键的多线程环境中使用。我知道写入 STL 容器不是线程安全的,对于boost::unordered_map
.
boost::unordered_map<const std::string, std::list<TypeA> > myMap;
// Added some elements to myMap
现在,如果我想将 A 类型的元素添加或删除到列表中,是否有必要锁定整个映射,而不是锁定正在修改的列表,以便其他线程可以读/写其余的键值对?
// Assuming there are pair with the keys "Apple" and "Orange" in myMap
A a, b;
myMap["Orange"].push_back(a) //Add an element to the list
myMap["Apple"].remove(b); //Remove an element
如果列表被另一个 STL 容器替换怎么办?
谢谢。