我正在尝试使用 boost::shared_mutex 来实现多读取器/单写入器互斥体。我的问题相当简单,当另一个线程尝试锁定共享互斥体进行写入时,线程是否有可能获得对共享互斥体的读取器访问权限?例如,我有10个线程,只有其中一个可以写,
- 线程 1 在该共享互斥锁上有一个共享锁并尝试读取
某物
- 线程2在该shared_mutex上有一个shared_lock并尝试读取
某物
- 线程 3 在该共享互斥锁上有一个 unique_lock 并尝试写入一些内容
- 线程4在该shared_mutex上有一个shared_lock并尝试读取
某物
- 线程 5 在该共享互斥锁上有一个共享锁并尝试读取
某物
目前,shared_mutex 被共享锁定thread 2,我的问题是是否有可能thread 4可以在之前获得对该shared_mutex的读取访问权限thread 3可以写吗?读取器/写入器互斥锁是否有可能陷入饥饿状态,例如 100 个读取器 vs. 100 个读取器1 位作家?
Thanks.
显然是boost::shared_mutex
将公平政策留给实施。它可以是公平的,读者对作者或作者对读者,因此根据您的特定版本,作者可能会挨饿。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)