boost :: shared_mutex multiple-reader / single-writer mutex

时间:2012-02-21 20:15:51

标签: c++ multithreading boost mutex boost-thread

我正在尝试使用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目前由主题2 共享锁定,我的问题是线程4 是否有可能获得对该shared_mutex的读取权限,在主题之前3 可以写吗?阅读器/写入器互斥体是否有可能陷入饥饿状态,例如,100读者v.s. 1作家?

感谢。

1 个答案:

答案 0 :(得分:3)

显然boost::shared_mutex将公平政策留给了实施。它既可以是公平的,也可以是读者,也可以是读者,因此根据您的特定版本,它可能会使作者受到饥饿。