我希望有人能在多个线程如何编写一个共同的容器(如地图)的建议。在某些线程可能使用Boost和C++多线程执行写入?
地图可能是类型共享相同的密钥的情形:标准::地图,用不同的线程访问对象来修改不同数据成员。在继续之前,每个线程是否等待当前线程执行unique_lock来完成?
会是因为每个线程进入一个关键部分,因为这例子简单:
//somewhere within the code
boost::unique_lock mutex;
void modifyMap(const std::string& key,const unsigned int dataX,
const unsigned int dataY)
{
// would each thread wait for exclusive access?
boost::unique_lock<boost::shared_mutex> lock (mutex);
// i now have exclusive access no race conditions;
m_map.find(key)->second.setDataX(dataX);
m_map.find(key)->second.setDataX(dataY);
}
在此先感谢
['的std :: map'](http://en.cppreference.com/w/cpp/container/map)通常*不* A ** **散列映射,但['的std :: unordered_map '](http://en.cppreference.com/w/cpp/container/unordered_map)是。 –