有一个线程称为“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/