我正在尝试在多线程场景中实现以下代码:
Get shared access to mutex
Read data structure
If necessary:
Get exclusive access to mutex
Update data structure
Release exclusive lock
Release shared lock
Run Code Online (Sandbox Code Playgroud)
Boost线程有一个shared_mutex专为多读者单作者模型设计的类.关于这个类,有几个stackoverflow问题.但是,我不确定它适合任何读者可能成为作家的情况.文件说明:
UpgradeLockable概念是SharedLockable概念的改进,允许可升级的所有权以及共享所有权和独占所有权.这是SharedLockable概念提供的多读取器/单写模型的扩展:单个 线程可以在其他人拥有共享所有权的同时具有可升级的所有权.
从单词"single"我怀疑只有一个线程可以持有可升级的锁.其他人只持有共享锁,无法升级到独占锁.
你知道boost::shared_lock在这种情况下是否有用(任何读者都可能成为作家),或者是否还有其他方法可以实现这一目标?