有一个名为" MThread"和20个线程称为" HThread_01" ..." HThread_20"。我正在寻找类似于具有以下属性的互斥锁的东西:
如果从" MThread"调用m.lock() 20" HThreads"将被阻止。
如果从20" HThreads"中的一个调用m.lock()只有" MThread"将被阻止,而不是其他" HThreads"。
C ++中是否有一个轻量级的概念(不是boost)可以实现这一点?非常感谢你。
答案 0 :(得分:4)
似乎std::shared_mutex
符合您的使用案例。 shared_mutex提供独占锁定和共享锁定。
tools > Extensions and Updates > Updates
在MThread中,您将使用std::shared_mutex mut;
获得独占访问
在MThread_01 ... MThread_20中,您将使用mut.lock()
获取共享访问权限。