Помощь - Поиск - Пользователи - Календарь
Полная версия: TMultiReadExclusiveWriteSynchronizer
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
NEDD
Ребят, как правильно использовать этот класс (TMultiReadExclusiveWriteSynchronizer)? Может пример бросите сюда, что к чему.
hardcase
Цитата(NEDD @ 6.06.2007 6:40) *
Ребят, как правильно использовать этот класс (TMultiReadExclusiveWriteSynchronizer)? Может пример бросите сюда, что к чему.
Класс (как видно из названия) используется для синхронизации доступа по записи. Например, в случае, когда у нас есть некий защищаемый ресурс, из которого можно массово читать (переменная состояния например), но запись должна быть исключительной.
Т.е. для доступа по чтению мы говорим BeginRead() и начинаем читать, после завершения говорим EndRead(). Для записи - BeginWrite() и по завершении операции EndWrite(). Если некий поток (или много потоков) в момент попытки записи другим потоком (BeginWrite) находится в состоянии чтения (выполнил BeginRead но не дошёл до EndRead), то поток, открывающий запись будет блокирован до тех пор, пока все читающие потоки не скажут EndRead.
Операция BeginRead может блокировать поток, только в случае, если в этот момент происходит запись (открыт BeginWrite).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.