Информация об изменениях

Сообщение Re: std::shared_mutex vs std::mutex от 18.02.2015 16:52

Изменено 18.02.2015 16:55 watchmaker

Здравствуйте, xoreaxeax, Вы писали:


X>но до конца не понял, когда реально имеет смысл использовать shared_mutex.

shared_mutex нужен когда нужен не только эксклюзивный доступ к защищаемому объекту, но и разделяемый. Просто mutex может организовать лишь эксклюзивный доступ.

X>При каких количествах тредов, времени выполнения задач.

Это не относится к выбору std::shared_mutex vs std::mutex.

X>Может быть кто-то может реальный кейс использования рассказать?

Задача о читателях-писателях — классика. Возникает везде, где один объект читают и обновляют несколько потоков.
Ну, например, работа с базой данных: много читателей могут одновременно читать из одной и той же таблицы не мешая друг-другу. Но обновление дынных в таблице должно быть отделено как от операций чтения, так и от других обновлений.
Здравствуйте, xoreaxeax, Вы писали:


X>но до конца не понял, когда реально имеет смысл использовать shared_mutex.

shared_mutex необходим когда нужен не только эксклюзивный доступ к защищаемому объекту, но и разделяемый. Просто mutex может организовать лишь эксклюзивный доступ.

X>При каких количествах тредов, времени выполнения задач.

Это не относится к выбору std::shared_mutex vs std::mutex. Ну за исключением разных граничных случаев: например, если поток только один, то shared_mutex можно заменить на mutex.
Выбор же делается исходя из набора необходимых операций с данными: если программа выиграет от разделяемого доступа, то нужно задуматься об использовании shared_mutex.

X>Может быть кто-то может реальный кейс использования рассказать?

Задача о читателях-писателях — классика. Возникает везде, где один объект читают и обновляют несколько потоков.
Ну, например, работа с базой данных: много читателей могут одновременно читать из одной и той же таблицы не мешая друг-другу. Но обновление дынных в таблице должно быть отделено как от операций чтения, так и от других обновлений.