我遇到一个问题,我有一种shared/exclusive situation ,除了,共享部分不需要真正分享:我会尝试解释。
独家部分很简单:如果持有独占锁,则在独占锁的所有者释放它之前,不允许任何其他人继续进行。
(不是真正的)共享工作者应该像这样运作:
这个锁定/工作模式是否有名称?如果本身没有名称,我感兴趣的是这是否完全使用/我写的内容是否合理。< / p>
答案 0 :(得分:0)
如果你添加&#34;完成&#34;标志在/为工作单位,并测试/设置在独家锁定内 - 你会缺少什么?
答案 1 :(得分:0)
我发现这只是共享工作者的另一个(普通)锁定/互斥锁:
独家/站长:
shared_mutex.lock(); // or timed_lock(timeout)
工人/共享:
shared_mutex.lock_shared(); // or timed_lock_shared
if (worker_mutex.try_lock()) // normal mutex
else if worker_mutex.try_lock() failed
worker_mutex.lock() // or timed lock
就我而言,整件事的表现完全无关紧要。独占锁定按秒的顺序保存,共享工作可能需要几百毫秒。该方案应该阻止的是让多个“客户端”在共享多个共享“客户端”等待独占锁并且正在被释放时执行(基本上)相同的工作 - 只有一个“客户端”将执行该工作,其他人只会等待它完成并返回。
是的,它非常混乱,但对于一个已经很混乱的情况来说这是一个特技。
有用的C ++课程:
shared_mutex
@Boost或@Std recursive_mutex