【发布时间】:2012-03-12 04:10:24
【问题描述】:
我正在尝试使用 boost::shared_mutex 来实现多读取器/单写入器互斥锁。我的问题很简单,当另一个线程试图锁定 shared_mutex 以进行写入时,线程是否有可能获得对 shared_mutex 的读取器访问权限?比如我有10个线程,只有一个可以写,
- 线程 1 在该 shared_mutex 上有一个 shared_lock 并尝试读取 东西
- 线程 2 在该 shared_mutex 上有一个 shared_lock 并尝试读取 东西
- 线程 3 在该 shared_mutex 上有一个 unique_lock 并尝试写一些东西
- 线程 4 在该 shared_mutex 上有一个 shared_lock 并尝试读取 东西
- 线程 5 在该 shared_mutex 上有一个 shared_lock 并尝试读取 东西
shared_mutex 当前被 thread 2 共享锁定,我的问题是 thread 4 是否有可能在 thread 之前获得对该 shared_mutex 的读取访问权限3会写吗?读/写互斥体是否有可能陷入饥饿状态,例如 100 个读卡器对 100 个读卡器1个作家?
谢谢。
【问题讨论】:
标签: c++ multithreading boost mutex boost-thread