非对称互斥体的概念
Concept of a asymmetric mutex
有 1 个线程 "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()
获得共享访问权限。
有 1 个线程 "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()
获得共享访问权限。