有一个线程称为“MThread”,有20个线程称为“HThread_01” ...“HThread_20”。我正在寻找具有以下属性的类似于互斥锁m的东西:

如果从“MThread”调用m.lock(),则将阻止20个“HThreads”。

如果从20个“HThreads”之一调用m.lock(),则仅“MThread”将被阻止,而其他“HThreads”则不会。

C++中有轻量级的概念(不是boost)吗?非常感谢你。

最佳答案

std::shared_mutex 似乎适合您的用例。 shared_mutex提供独占和共享锁定。

std::shared_mutex mut;

在MThread中,您将使用mut.lock()获得独占访问权限

在MThread_01 ... MThread_20中,您将使用mut.lock_shared()获得共享访问。

关于c++ - 非对称互斥锁的概念,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36362244/

10-11 18:59