Мьютекс между чтением и записью - PullRequest
3 голосов
/ 17 марта 2011

Я использую мьютекс для критической секции. У меня есть ограничение дизайна, 1) Если 2 чтения происходят в 2 разных потоках, то критический раздел должен быть доступен для обоих. 2) Если происходит запись, то чтение в другой ветке должно быть заблокировано. 3) Если происходит чтение, запись в другой поток должна быть заблокирована.

Я не знаю, как это сделать с Createmutex, openmutex, waitforsingleobject и releasemutex apis.

Ответы [ 3 ]

4 голосов
/ 17 марта 2011

То, что вы ищете, это Reader-Writer lock . Есть несколько реализаций этого в интернете, например этот .

0 голосов
/ 17 марта 2011

Если проблема с синхронизацией / критической секцией ограничена одним процессом и несколькими потоками, я рекомендую использовать Объекты критической секции вместо Объекты мьютекса . У вас есть несколько примеров на страницах, связанных с MSDN. Прочитайте связанные страницы MSDN и если у вас есть базовые концепции синхронизации параллелизма и необходимые знания Windows API, вы должны быстро развернуться, если не прочитать. Нет ничего особенного в мьютексах и критических секциях с точки зрения API.

0 голосов
/ 17 марта 2011

Посмотрите следующую ссылку, чтобы увидеть, соответствует ли этот собственный API Windows вашим требованиям:

Тонкие блокировки чтения / записи (SRW)

...