Здравствуйте Vogul, Вы писали:
V>Здравствуйте User99, Вы писали:
V>Мне кажется, что в данном случае надо организовать синхронизацию не на уровне элементов массива(вариант 3), а на уровне читателей-писателей, т. е. объекты синхронизации создаются не для каждого элемента массива, а для каждого читателя-писателя(ведь именно их и надо разделить). При обращению к элементу проверять, не занят ли он кем, если занят, то ждать освобождения. А заботу о сигнализации освобождения элемента возложить на того, кто его занял. Получится некий массив: кто занял и что занял.
Есть недокументированные функции Windows NT для блокировки "Читатель/Писатель". О них написано в "Windows Developer's Journal" Jan 99. С сайта журнала можно скачать архив с С++ кодом:
ftp://ftp.wdj.com/pub/1999/jan99.zip (нужный файл называется claar.zip).
Еще блокировка "Читатель/Писатель" описана в книжке "Designing solutions with COM+ Technologies".