Я хотел бы, чтобы заблокировать ключи/индекс в другой карте, как это:Как использовать boost :: mutex как отображаемый тип в std :: map?
std::map<int, boost::mutex> pointCloudsMutexes_;
pointCloudsMutexes_[index].lock();
Однако, я получаю следующее сообщение об ошибке:
/usr/include/c++/4.8/bits/stl_pair.h:113: error: no matching function for call to 'boost::mutex::mutex(const boost::mutex&)'
: first(__a), second(__b) { }
^
Это похоже на работу с std::vector
, но не с std::map
. Что я делаю не так?
Непонятно, какие требования привели к конструктивному решению о том, что карта мьютексов является допустимым решением. Вероятно, есть намного более элегантный способ добиться того, чего вы хотите. –
Консолидация hashmap – Raaj
Этот дизайн не будет одновременной картой хэша. Это будет неконкурентная карта мьютексов. Вам нужно обернуть всю карту и защитить ее всего одним мьютексом. –