Я пытаюсь использовать boost :: shared_mutex для реализации мьютекса с несколькими читателями / одиночными записями. Мой вопрос довольно прост: может ли поток получить доступ читателя к shared_mutex, когда другой поток пытается заблокировать этот shared_mutex для записи? Например, у меня есть 10 потоков, только один из них может писать,
- поток 1 имеет shared_lock на этом shared_mutex и пытается что-то прочитать
- поток 2 имеет shared_lock на этом shared_mutex и пытается что-то прочитать
- поток 3 имеет unique_lock на этом shared_mutex и пытается что-то написать
- поток 4 имеет shared_lock на этом shared_mutex и пытается что-то прочитать
- поток 5 имеет shared_lock на этом shared_mutex и пытается что-то прочитать
Shared_mutex в настоящее время заблокирован потоком 2, мой вопрос заключается в том, может ли поток 4 получить доступ на чтение к этому shared_mutex перед потоком 3 strong> можете написать? Возможно ли, чтобы мьютекс читателя / писателя когда-либо попадал в ситуацию голода, например, 100 читателей против. 1 писатель?
Спасибо.