Функции дежурного ожидания

Функции дежурного ожидания

Всего предусмотрено пять функций дежурного ожидания, но ниже приводятся прототипы только трех из них, которые представляют для нас непосредственный интерес: 

DWORD WaitForSingleObjectEx(HANDLE hObject, DWORD dwMilliseconds, BOOL bAlertable)

DWORD WaitForMultipleObjectsEx(DWORD cObjects, LPHANDLE lphObjects, BOOL fWaitAll, DWORD dwMilliseconds, BOOL bAlertable)

DWORD SleepEx(DWORD dwMilliseconds, BOOL bAlertable) 

В каждой из функций дежурного ожидания имеется флаг bAlertable, который в случае асинхронного ввода/вывода должен устанавливаться в TRUE. Приведенные выше функции являются расширением знакомых вам функций Wait и Sleep.

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

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

• Истекает интервал ожидания.

• Все процедуры завершения, находящиеся в очереди потока, прекращают свое выполнение, а значение параметра bAlertable равно TRUE. Процедура завершения помещается в очередь тогда, когда завершается соответствующая ей операция ввода/вывода (рис. 14.2). 

Заметьте, что со структурами OVERLAPPED в функциях ReadFileEx и WriteFileEx не связаны никакие события, поэтому ни один из дескрипторов, указываемых при вызове функции ожидания, не связывается непосредственно с какой-либо определенной операцией ввода/вывода. В то же время, функция SleepEx не связана с объектами синхронизации, и поэтому ее проще всего использовать. В случае функции SleepEx в качестве длительности интервала ожидания обычно указывают значение INFINITE, поэтому возврат из этой функции произойдет только после того, как закончится выполнение одной или нескольких процедур завершения, которые в настоящий момент находятся в очереди.

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

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

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

Грозовые ожидания

Из книги Журнал `Компьютерра` N735 автора Журнал «Компьютерра»

Грозовые ожидания Автор: Ваннах МихаилПризовем на помощь архетип… Сидишь себе в уютной пещере после хорошей порции мяса шерстистого носорога, щуришься в багрянец костра и ведешь речь о том угрожающем, что прячется в ночном лесу - хищниках, вампирах, леших… Тебе внимают -


Терпимое время ожидания

Из книги Разгони свой сайт автора Мациевский Николай

Терпимое время ожидания При исследовании, проведенном в 2004 году, было установлено, что терпимое время ожидания для неработающих ссылок (без обратной связи) находилось между 5 и 8 секундами. С добавлением уведомления пользователя о процессе загрузки (обратной связи),


Проект сдан, но ожидания заказчика не оправдались

Из книги Продвижение бизнеса в Интернет. Все о PR и рекламе в сети автора Гуров Филипп

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


Время ожидания перед проверкой диска

Из книги Тонкости реестра Windows Vista. Трюки и эффекты автора Клименко Роман Александрович

Время ожидания перед проверкой диска При запуске операционной системы после некорректного завершения ее работы (внезапное отключение электропитания, аппаратные сбои и т. п.) включается режим автоматической проверки дисков. Однако такая проверка начинается не сразу, а


7.6. Условные переменные: время ожидания и широковещательная передача

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

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


Состояния дежурного ожидания

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Состояния дежурного ожидания Во всех предыдущих примерах значение параметра bAlertable, являющегося последним параметром функции SignalObjectAndWait, полагалось равным FALSE. Используя вместо него значение TRUE, мы указываем, что ожидание должно быть, как говорят, дежурным (alertable), и тогда


Выполнение процедуры завершения и возврат из функции дежурного ожидания

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

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


Таймеры ожидания

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

Таймеры ожидания Windows NT поддерживает таймеры ожидания (waitable timers), являющихся одним из типов объектов ядра, осуществляющих ожидание.Вы всегда можете создать собственный сигнал синхронизации, создав синхронизирующий поток, который устанавливает событие в результате


Пример: использование таймера ожидания

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Пример: использование таймера ожидания В программе 14.3 демонстрируется применение таймера ожидания для генерации периодических сигналов.Программа 14.3. TimeBeep: генерация периодических сигналов /* Глава 14. TimeBeep.с. Периодическое звуковое оповещение.  *//* Использование: TimeBeep


Комментарии к примеру с таймером ожидания

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

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


18.2.1. Режим ожидания

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

18.2.1. Режим ожидания Процесс, сопровождающийся запросом на невыполнение в течение определенного количества времени, называется отложенным (или "спящим"). Для режима ожидания доступны четыре функции; каждая из них измеряет время в различных единицах. Они также ведут себя и


Функции ожидания

Из книги Продвижение порталов и интернет-магазинов автора Гроховский Леонид О.

Функции ожидания Ожидание выполнения условия для ждущей блокировки может выполняться в двух вариантах: простое ожидание и ожидание с установкой тайм-аута.int pthread_sleepon_wait(const volatile void* addr);int pthread_sleepon_timedwait(const volatile void* addr, uint64_t nsec);При вызове функций ожидания необходимо указать


Пример 9-4. Ограничение времени ожидания команды read

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

Пример 9-4. Ограничение времени ожидания команды read #!/bin/bash# t-out.sh TIMELIMIT=4 # 4 секундыread -t $TIMELIMIT variable <&1echoif [ -z "$variable" ]then echo "Время ожидания истекло."else echo "variable = $variable"fi exit 0$UIDuser id numberUID (идентификатор) текущего пользователя, в соответствии с /etc/passwdЭто реальный UID текущего


Ограничение времени ожидания для транзакций (Lock timeout)

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

Ограничение времени ожидания для транзакций (Lock timeout) При возникновении конфликта обновления записи в InterBase возможны два варианта поведения транзакции, задаваемых параметром WAIT (isc_tpb_wait / bc_tpb_no_wait). - бесконечное ожидание разрешения конфликта или немедленная выдача ошибки.


5.2.3. Операции ожидания и установки

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

5.2.3. Операции ожидания и установки Каждый семафор имеет неотрицательное значение и поддерживает операции ожидания и установки. Системный вызов semop() реализует обе операции. Первым аргументом функции является идентификатор группы семафоров. Второй аргумент — это массив


Наращивание ссылочной массы и ожидания от поискового продвижения

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

Наращивание ссылочной массы и ожидания от поискового продвижения Количество внешних ссылок, ведущих на страницы разных тематических кластеров, относится к числу простых метрик, улучшение которых почти наверняка улучшит позиции портала в поисковой выдаче. Ранее я уже