我有一个unordered_map我希望可以被多个线程访问的方法,但是用互斥锁锁定整个过程太慢了。
为了解决这个问题,我在的每个元素中放置了一个互斥锁unordered_map:
class exampleClass{
std::mutex m;
int data;
};
std::unordered_map<int,exampleClass> exampleMap;
Run Code Online (Sandbox Code Playgroud)
问题是我无法安全地擦除元素,因为要破坏互斥锁必须将其解锁,但是如果解锁,则另一个线程可以将其锁定并在破坏期间写入或读取该元素。