Синхронизация чтения /записи
-
23-08-2019 - |
Вопрос
У меня есть структура данных, операции которой могут быть классифицированы как операции чтения (напримерпоиск) и операции записи (например,вставка, удаление).Эти операции должны быть синхронизированы таким образом, чтобы:
- Операции чтения не могут выполняться во время выполнения операции записи (если только в том же потоке), однако операции чтения могут выполняться одновременно с другими операциями чтения.
- Операции записи не могут выполняться во время выполнения операций чтения или записи (если только в том же потоке).
Как может быть реализован такой вид синхронизации?
Платформа является win-api, поэтому объекты синхронизации api и взаимосвязанные функции являются основными строительными блоками.
Решение
Рекомендуемая Microsoft реализация блокировки чтения / записи приведена здесь (вам придется немного прокрутить до заголовка "Блокировки чтения / записи").:
http://msdn.microsoft.com/en-us/library/ms810427.aspx
Для справки, для тех, у кого такой же вопрос, но у кого есть роскошь .NET:
http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx