我试图使用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共享锁定,我的问题是:是否可能在线程3写入之前,线程4可以获得对该shared_mutex的读取访问权?读/写锁是否可能陷入饥饿状态,例如100个读者与1个写者?
谢谢。