Вопрос

У меня есть структура данных, операции которой могут быть классифицированы как операции чтения (напримерпоиск) и операции записи (например,вставка, удаление).Эти операции должны быть синхронизированы таким образом, чтобы:

  • Операции чтения не могут выполняться во время выполнения операции записи (если только в том же потоке), однако операции чтения могут выполняться одновременно с другими операциями чтения.
  • Операции записи не могут выполняться во время выполнения операций чтения или записи (если только в том же потоке).

Как может быть реализован такой вид синхронизации?

Платформа является 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top