【发布时间】:2011-11-23 02:14:42
【问题描述】:
是否可以使用互斥锁只锁定数据结构的一个元素? 例如
boost::mutex m_mutex;
map<string, int> myMap;
// initialize myMap so that it has 10 elements
// then in thread 1
{
boost::unique_lock<boost::mutex> lock(m_mutex);
myMap[1] = 5 ; // write map[1]
}
// in thread 2
{
boost::unique_lock<boost::mutex> lock(m_mutex);
myMap[2] = 4 ; // write map[1]
}
我的问题: 线程 1 在写 map[1] 时,线程 2 可以同时写 map[2] 吗? 线程锁定整个地图数据结构或仅锁定一个元素,例如地图[1] 或地图[2]。
谢谢
【问题讨论】:
标签: c++ multithreading boost locking mutex