我希望有人能在多個線程如何編寫一個共同的容器(如地圖)的建議。在某些線程可能使用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)是。 –