我正在使用C++,并且正在使用Boost库互斥体,recursive_mutex和其他同步对象。
我经常有以下模式:
可以从不同的线程调用函数。我希望能够并行执行DoSomethingA(),DoSomethingB()和DoSomethingC()。但是,当调用RebuildAll()时,我需要确保未执行DoSomething函数。
有什么可以帮助我保护这些功能的吗?
最佳答案
这通常称为reader-writer锁。读写器锁定的规则是:
在您的示例中,
RebuildAll()
将是作家,而DoSomethingA()
至DoSomethingC()
将是读者。Boost具有名为
boost::shared_mutex
的读写器锁的实现。但是,这尚未在标准库中。