Пример: использование дескриптора файла в качестве объекта синхронизации
Пример: использование дескриптора файла в качестве объекта синхронизации
Перекрывающийся ввод/вывод очень удобно и просто реализуется в тех случаях, когда может существовать только одна незавершенная операция. Тогда для целей синхронизации программа может использовать не событие, а дескриптор файла.
Приведенный ниже фрагмент кода показывает, каким образом программа может инициировать операцию чтения для считывания части файла, продолжить свое выполнение для осуществления других видов обработки, а затем перейти в состояние ожидания перехода дескриптора файла в сигнальное состояние.
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);
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Использование идентификатора UID в качестве условия
Использование идентификатора UID в качестве условия Если разрабатываемый код связан с контекстом процесса, то иногда появляется возможность выполнить альтернативную реализацию не "ломая" существующий код. Это важно, если необходимо переписать важный системный вызов и
Регистрация файла DateArc.wsc в качестве СОМ-объекта
Регистрация файла DateArc.wsc в качестве СОМ-объекта После написания текста объекта-сценария нужно внести информацию о нем в системный реестр, т.е, зарегистрировать объект. Это можно сделать несколькими способами, самый простой из которых заключается в следующем. Нужно
Пример: сервер времени и даты в качестве демона
Пример: сервер времени и даты в качестве демона В листинге 13.2 представлено изменение нашего сервера времени и даты, не зависящего от протокола. В отличие от сервера, показанного в листинге 11.8, в нем вызывается функция daemon_init, чтобы этот сервер мог выполняться в качестве
Пример передачи дескриптора
Пример передачи дескриптора Теперь мы представим пример передачи дескриптора. Мы напишем программу под названием mycat, которой в качестве аргумента командной строки передается полное имя файла. Эта программа открывает файл и копирует его в стандартный поток вывода. Но
Использование uA741 в качестве детектора уровня
Использование uA741 в качестве детектора уровня Схема на рис. 16.17 используется в качестве детектора уровня входного напряжения V1. Создайте эту схему в Capture с именем leveldet. Используйте VPWL для V1, VDC для Vref=3 В, V+=9 В и V–=9 В. Затем добавьте в схему резистор RL=4,8 кОм и заземление. При
Использование QTextBrowser в качестве простого браузера системы помощи
Использование QTextBrowser в качестве простого браузера системы помощи Для больших приложений может потребоваться более сложная система помощи в отличие от той, которую обычно обеспечивают всплывающие подсказки, комментарии в строке состояния и справки «что это такое?».
Использование объекта View
Использование объекта View Вспомогательный объект View определяет многие аспекты отображения окна или области. Объект View обладает следующими свойствами. Свойство объекта View Для чего предназначено Туре Соответствует выбору из меню Вид таких команд, как Обычный,
15.4.2.1. Учебный пример: использование make для преобразования файла документации
15.4.2.1. Учебный пример: использование make для преобразования файла документации В make-файле программы fetchmail, например, есть три правила, которые связывают файлы FAQ, FEATURES и NOTES с исходными HTML-файлами fetchmail-FAQ.html, fetchmail-features.html и design-notes.html.HTML-файлы предназначены для просмотра на
11.8. Использование Web-браузера в качестве универсального клиента
11.8. Использование Web-браузера в качестве универсального клиента Отделение CLI-сервера от GUI-интерфейса стало особенно привлекательной стратегией после того, как в середине 1990-х годов технология World Wide Web преобразила мир компьютерных вычислений. Для большого класса
15.4.2.1. Учебный пример: использование make для преобразования файла документации
15.4.2.1. Учебный пример: использование make для преобразования файла документации В make-файле программы fetchmail, например, есть три правила, которые связывают файлы FAQ, FEATURES и NOTES с исходными HTML-файлами fetchmail-FAQ.html, fetchmail-features.html и design-notes.html.HTML-файлы предназначены для просмотра на
8.1.17. Использование массива в качестве стека или очереди
8.1.17. Использование массива в качестве стека или очереди Базовые операции со стеком называются push и pop, они добавляют и удаляют элементы в конец массива. Базовые операции с очередью — это shift (удаляет элемент из начала массива) и unshift (добавляет элемент в начало массива). Для