Асинхронный ввод/вывод и порты завершения

Операциям ввода и вывода присуща более неспешная скорость выполнения по сопоставлению с другими видами обработки. Предпосылкой такового замедления являются последующие причины:

• Задержки, обусловленные затратами времени на поиск подходящих дорожек и секторов на устройствах случайного доступа (диски, компакт-диски).

• Задержки, обусловленные сравнимо низкой скоростью обмена данными меж физическими устройствами и системной Асинхронный ввод/вывод и порты завершения памятью.

• Задержки при передаче данных по сети с внедрением файловых, серверов, хранилищ данных и т.д..

Во всех прошлых примерах операции ввода/вывода производятся синхронно с потоком, потому весь поток обязан простаивать, пока они не закончатся.

В этой главе показано, каким образом можно организовать продолжение выполнения потока, не Асинхронный ввод/вывод и порты завершения дожидаясь окончания операций ввода/вывода, что будет соответствовать выполнению потоками асинхронного ввода/вывода. Разные методики, доступные в Windows, иллюстрируются примерами.

Некие из этих методик употребляются в таймерах ожидания, которые также описываются в истинной главе.

В конце концов, что в особенности принципиально, исследовав стандартные асинхронные операции ввода/вывода, мы сможем Асинхронный ввод/вывод и порты завершения использовать порты окончания ввода/вывода, которые оказываются очень полезными при построении масштабируемых серверов, способных обеспечивать поддержку огромного количества клиентов без сотворения для каждого из их отдельного потока. Программка 14.4 представляет собой измененный вариант разработанного ранее сервера, позволяющий использовать порты окончания ввода/вывода.

Обзор способов асинхронного ввода/вывода Windows

В Windows выполнение Асинхронный ввод/вывод и порты завершения асинхронного ввода/вывода обеспечивается в согласовании с 3-мя методиками.

Многопоточный ввод/вывод (Multihreaded I/O).Любой из потоков снутри процесса либо набора процессов делает обыденный синхронный ввод/вывод, но при всем этом другие потоки могут продолжать свое выполнение.

Перекрывающийся ввод/вывод (Overlapped I/O).Запустив операцию чтения, записи либо Асинхронный ввод/вывод и порты завершения иную операцию ввода/вывода, поток продолжает свое выполнение. Если сгустку для продолжения выполнения требуются результаты ввода/вывода, он ждет, пока не станет легкодоступным соответственный дескриптор либо не наступит данное событие. В Windows 9x перекрывающийся ввод/вывод поддерживается только для поочередных устройств, к примеру именованных каналов.

• Процедуры окончания (либо расширенный ввод/вывод) (Completion Асинхронный ввод/вывод и порты завершения routines (extended I/O)).Когда наступает окончание операций ввода/вывода, система вызывает специальную функцию окончания, выполняющуюся снутри потока. Расширенный ввод/вывод для дисковых файлов в Windows 9x не поддерживается.

Многопоточный ввод/вывод с внедрением именованных каналов использован в сервере с многопоточной поддержкой, который рассматривался в главе 11. Программка Асинхронный ввод/вывод и порты завершения grepMT (программка 7.1) управляет параллельным выполнением операций ввода/вывода с ролью нескольких файлов. Таким макаром, мы уже располагаем рядом программ, которые делают многопоточный ввод/вывод и тем обеспечивают одну из форм асинхронного ввода/вывода.

Перекрывающийся ввод/вывод является предметом рассмотрения последующего раздела, а в приведенных в нем примерах, реализующих преобразование файлов (из Асинхронный ввод/вывод и порты завершения ASCII в UNICODE), эта методика использована для иллюстрации способностей поочередной обработки файлов. С этой целью употребляется переделанный вариант программки 2.4. Прямо за перекрывающимся вводом/выводом рассматривается расширенный ввод/вывод, использующий процедуры окончания.

Примечание

Способы перекрывающегося и расширенного ввода/вывода нередко оказываются сложными в реализации, изредка обеспечивают какие-либо достоинства Асинхронный ввод/вывод и порты завершения в отношении производительности, время от времени даже становясь предпосылкой ее ухудшения, а в случае файлового ввода/вывода способны работать только под управлением Windows NT. Эти задачи преодолеваются при помощи потоков, потому, возможно, многие читатели захочут сразу перейти к разделам, посвященным таймерам ожидания и портам окончания ввода/вывода, ворачиваясь к Асинхронный ввод/вывод и порты завершения этому разделу при необходимости. С другой стороны, элементы асинхронного ввода/вывода находятся как в устаревших, так и в новых разработках, в связи с чем эти способы все-же стоит изучить.

Так, разработка СОМ на платформе NT5 поддерживает асинхронный вызов способов, потому обозначенная методика может понадобиться многим читателям, которые Асинхронный ввод/вывод и порты завершения употребляют либо собираются использовать технологию СОМ. Не считая того, много общего с расширенным вводом/выводом имеют операции асинхронного вызова процедур (глава 10), и хотя лично я предпочитаю использовать потоки, другие могут дать предпочтение конкретно этому механизму.


astma-prichini-raznie-vozdejstvie-odinakovoe.html
astragal-sherstistocvetkovij-doklad.html
astrahan-ul-ulyanova-67-tel-78512732220-89086132220-faks-78512592838-e-mail.html