【发布时间】:2016-04-07 06:28:16
【问题描述】:
我想像这样将键/索引锁定在另一个地图中:
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。我做错了什么?
【问题讨论】:
-
有人想知道是什么要求导致了设计决策,即互斥体映射是一种有效的解决方案。可能有一种更优雅的方式来实现您想要的。
-
并发哈希图
-
这种设计不会是并发哈希映射。这将是互斥锁的非并发映射。您需要包装整个地图并仅使用一个互斥锁来保护它。
-
那是糟糕的设计。这种访问一个键/值的方式我需要锁定整个互斥锁?
-
为了找到或插入一个,是的。否则,您在执行上述任何一项操作时都会出现数据竞争。
标签: c++ boost mutex stdmap boost-mutex