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