Пример: использование дескриптора файла в качестве объекта синхронизации

Пример: использование дескриптора файла в качестве объекта синхронизации

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

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

OVERLAPPED ov = { 0, 0, 0, 0, NULL /* События не используются. */ };

HANDLE hF;

DWORD nRead;

BYTE Buffer[BUF_SIZE];

hF = CreateFile( …, FILE_FLAG_OVERLAPPED, … );

ReadFile(hF, Buffer, sizeof(Buffer), &nRead, &ov);

/* Выполнение других видов обработки. nRead не обязательно достоверно.*/

/* Ожидать завершения операции чтения. */

WaitForSingleObject(hF, INFINITE);

GetOverlappedResult(hF, &ov, &nRead, FALSE);

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

15.4.2.1. Учебный пример: использование make для преобразования файла документации

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

15.4.2.1. Учебный пример: использование make для преобразования файла документации В make-файле программы fetchmail, например, есть три правила, которые связывают файлы FAQ, FEATURES и NOTES с исходными HTML-файлами fetchmail-FAQ.html, fetchmail-features.html и design-notes.html.HTML-файлы предназначены для просмотра на


11.8. Использование Web-браузера в качестве универсального клиента

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

11.8. Использование Web-браузера в качестве универсального клиента Отделение CLI-сервера от GUI-интерфейса стало особенно привлекательной стратегией после того, как в середине 1990-х годов технология World Wide Web преобразила мир компьютерных вычислений. Для большого класса


15.4.2.1. Учебный пример: использование make для преобразования файла документации

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

15.4.2.1. Учебный пример: использование make для преобразования файла документации В make-файле программы fetchmail, например, есть три правила, которые связывают файлы FAQ, FEATURES и NOTES с исходными HTML-файлами fetchmail-FAQ.html, fetchmail-features.html и design-notes.html.HTML-файлы предназначены для просмотра на


Регистрация файла DateArc.wsc в качестве СОМ-объекта

Из книги OrCAD PSpice. Анализ электрических цепей автора Кеоун Дж.

Регистрация файла DateArc.wsc в качестве СОМ-объекта После написания текста объекта-сценария нужно внести информацию о нем в системный реестр, т.е, зарегистрировать объект. Это можно сделать несколькими способами, самый простой из которых заключается в следующем. Нужно


8.1.17. Использование массива в качестве стека или очереди

Из книги VBA для чайников автора Каммингс Стив

8.1.17. Использование массива в качестве стека или очереди Базовые операции со стеком называются push и pop, они добавляют и удаляют элементы в конец массива. Базовые операции с очередью — это shift (удаляет элемент из начала массива) и unshift (добавляет элемент в начало массива). Для


Использование uA741 в качестве детектора уровня

Из книги Linux программирование в примерах автора Роббинс Арнольд

Использование uA741 в качестве детектора уровня Схема на рис. 16.17 используется в качестве детектора уровня входного напряжения V1. Создайте эту схему в Capture с именем leveldet. Используйте VPWL для V1, VDC для Vref=3 В, V+=9 В и V–=9 В. Затем добавьте в схему резистор RL=4,8 кОм и заземление. При


Использование объекта View

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Использование объекта View Вспомогательный объект View определяет многие аспекты отображения окна или области. Объект View обладает следующими свойствами. Свойство объекта View Для чего предназначено Туре Соответствует выбору из меню Вид таких команд, как Обычный,


Пример: сервер времени и даты в качестве демона

Из книги автора

Пример: сервер времени и даты в качестве демона В листинге 13.2 представлено изменение нашего сервера времени и даты, не зависящего от протокола. В отличие от сервера, показанного в листинге 11.8, в нем вызывается функция daemon_init, чтобы этот сервер мог выполняться в качестве


Пример передачи дескриптора

Из книги автора

Пример передачи дескриптора Теперь мы представим пример передачи дескриптора. Мы напишем программу под названием mycat, которой в качестве аргумента командной строки передается полное имя файла. Эта программа открывает файл и копирует его в стандартный поток вывода. Но


Использование идентификатора UID в качестве условия

Из книги автора

Использование идентификатора UID в качестве условия Если разрабатываемый код связан с контекстом процесса, то иногда появляется возможность выполнить альтернативную реализацию не "ломая" существующий код. Это важно, если необходимо переписать важный системный вызов и


Использование QTextBrowser в качестве простого браузера системы помощи

Из книги автора

Использование QTextBrowser в качестве простого браузера системы помощи Для больших приложений может потребоваться более сложная система помощи в отличие от той, которую обычно обеспечивают всплывающие подсказки, комментарии в строке состояния и справки «что это такое?».