Можно ли использовать мьютекс для блокировки только одного элемента структуры данных?
например
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 пишет карту [1], поток 2 может писать карту [2] одновременно?
Поток блокирует всю структуру данных карты или только элемент, например карта [1] или карта [2].
спасибо