Здравствуйте, Softwarer, Вы писали:
S>Здравствуйте, _spin_, Вы писали:
S>Наибольший интерес вызывает последний этап — "после чего ОП вновь захватывает мьютекс". Интересно, как он узнает что уже наступило "после чего".
Ещё не знаю.
S>Я бы сказал, это задача на событие + оповещение нескольких подписчиков. Вариантов решения можно назвать много, и api-шными средствами и дополнительными. Например, через TEvent. Я бы, возможно, сделал так:
Возможно и через TEvent, надо подумать.
S>- используется TMultiReadExclusiveWriteSynchronizer, в который обернуты нужные данные и некоторое поле "версия данных".
S>- при изменении структуры ОП захватывает данные в монопольном режиме, модифицирует и увеличивает номер версии.
S>- другие потоки хватают данные в shared режиме, проверяют номер версии, и если нужно, модифицируют свои внутренние структуры.
TMultiReadExclusiveWriteSynchronizer — можно поподробнее что это и с чем его есть положено

? А лучше на промере.
S>Вообще, пункт "другие потоки синхронизируют структуру" выглядит чуть подозрительным — может быть, им правильнее читать одну копию?
У каждого потока — своя копия, которя является частью общей структуры каталогов.
S>И в любом случае — продумайте, что должно происходить, если во время "другой поток синхронизирует" структура меняется повторно.
Всё повторяется, т.к. изменения в каталоге будут считаны после синхронизации (ReadDirectoryChanges) и если изменения есть — новая синхронизация.
... <<#1 — 09 Pimple Jackson Hey you>>