Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Я уже говорил когда то, что практически ВЕСЬ ввод/вывод в... 05.05.05 14:31 Число просмотров: 1968
Автор: amirul <Serge> Статус: The Elderman
|
> Что подобная "синхронизация" - в высшей степени дурной тон.
Я уже говорил когда то, что практически ВЕСЬ ввод/вывод в винде - асинхронный. То бишь обработчик просто ставит запрос в очередь (при необходимости выставляет CompletionRoutine) и возвращает STATUS_PENDING. А вызывающий поток дальше сам решает, блокироваться ему на ожидании завершения или делать чего то свое.
> IRP надо освобождать как можно быстрее. И в DeviceIOCtrl
Зачем? IRP это просто область памяти в неподкачиваемом пуле (не такая уж и большая стоит отметить). И освобождать ЗАПРОС НА ВВОД/ВЫВОД (I/O Request Packet) нужно только после того, как этот запрос удовлетворен или стало ясно, что он не может быть удовлетворен без ошибок.
> задерживаться нехорошо.
Задерживаться нельзя только на высоком IRQL/с выделенным спинлоком, во всех остальных случаях обрабатывать можно столько сколько нужно.
> А для синхронизации мутексы существуют. Для синхронизации есть много чего, а ввод/вывод в большинстве случаев принципиально может быть только асинхронным.
|
|
|