Здравствуйте, watchmaker, Вы писали:
W>Здравствуйте, xoreaxeax, Вы писали:
X>>но до конца не понял, когда реально имеет смысл использовать shared_mutex.
W>shared_mutex необходим когда нужен не только эксклюзивный доступ к защищаемому объекту, но и разделяемый. Просто mutex может организовать лишь эксклюзивный доступ.
X>>При каких количествах тредов, времени выполнения задач.
W>Это не относится к выбору std::shared_mutex vs std::mutex. Ну за исключением разных граничных случаев: например, если поток только один, то shared_mutex можно заменить на mutex.
W>Выбор же делается исходя из набора необходимых операций с данными: если программа выиграет от разделяемого доступа, то нужно задуматься об использовании shared_mutex.
X>>Может быть кто-то может реальный кейс использования рассказать?
W>Задача о читателях-писателях — классика. Возникает везде, где один объект читают и обновляют несколько потоков.
W>Ну, например, работа с базой данных: много читателей могут одновременно читать из одной и той же таблицы не мешая друг-другу. Но обновление данных в таблице должно быть отделено как от операций чтения, так и от других обновлений.
Это все и так понятно. Я вот и спрашиваю про то- при каких конкретно случаях(в примерах), перформанс будет лучше. Ибо я так понимаю, что не все так однозначно.