|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
SleepEx
The SleepEx function causes the current thread to enter a wait state until one of the following occurs:
· An I/O completion callback function is called · An asynchronous procedure call (APC) is queued to the thread. · The time-out interval elapses
DWORD SleepEx(
DWORD dwMilliseconds, // time-out interval in milliseconds BOOL bAlertable // early completion flag );
Parameters
dwMilliseconds
Specifies the time, in milliseconds, that the delay is to occur. A value of zero causes the function to return immediately. A value of INFINITE causes an infinite delay.
bAlertable
Specifies whether the function may terminate early due to an I/O completion callback function or an APC. If bAlertable is FALSE, the function does not return until the time-out period has elapsed. If an I/O completion callback occurs, the function does not return and the I/O completion function is not executed. If an APC is queued to the thread, the function does not return and the APC function is not executed. If bAlertable is TRUE and the thread that called this function is the same thread that called the extended I/O function (ReadFileEx or WriteFileEx), the function returns when either the time-out period has elapsed or when an I/O completion callback function occurs. If an I/O completion callback occurs, the I/O completion function is called. If an APC is queued to the thread (QueueUserAPC), the function returns when either the timer-out period has elapsed or when the APC function is called.
Return Values
The return value is zero if the specified time interval expired. The return value is WAIT_IO_COMPLETION if the function returned due to one or more I/O completion callback functions. This can happen only if bAlertable is TRUE, and if the thread that called the SleepEx function is the same thread that called the extended I/O function.
Remarks
This function can be used with the ReadFileEx or WriteFileEx functions to suspend a thread until an I/O operation has been completed. These functions specify a completion routine that is to be executed when the I/O operation has been completed. For the completion routine to be executed, the thread that called the I/O function must be in an alertable wait state when the completion callback function occurs. A thread goes into an alertable wait state by calling either SleepEx, MsgWaitForMultipleObjectsEx, WaitForSingleObjectEx, or WaitForMultipleObjectsEx, with the function's bAlertable parameter set to TRUE.
A thread can relinquish the remainder of its time slice by calling this function with a sleep time of zero milliseconds. You have to be careful when using SleepEx and DDE. If a thread creates any windows, it must process messages. DDE sends messages to all windows in the system. If you have a thread that uses a wait function with no time-out interval, the system will deadlock. Therefore, if you have a thread that creates windows, use MsgWaitForMultipleObjects or MsgWaitForMultipleObjectsEx, rather than SleepEx.
See Also
MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx, QueueUserAPC, ReadFileEx, Sleep, WaitForMultipleObjectsEx, WaitForSingleObjectEx , WriteFileEx
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
SleepEx
Функция SleepEx заставляет текущую резьбу, чтобы вводить состояние ожидания пока одно из следующего не произойдет:
Функция возврата завершения В/В названа асинхронный вызов процедуры (APC), поставлен в очередь в резьбу. Интервал задержки истекает
DWORD SleepEx(
DWORD dwMilliseconds, // ИНТЕРВАЛ задержки в течение флага раннего завершения миллисекунд BOOL bAlertable // );
Параметры
dwMilliseconds
Определяет время, в течение миллисекунд, что задержка должна произойти. Величина нуля заставляет функцию, чтобы возвращаться немедленно. Величина БЕСКОНЕЧНЫХ причин бесконечная задержка.
bAlertable
Определяет может функция завершиться рано из-за функции возврата завершения В/В или APC. Если bAlertable - ЛОЖЬ, функция не возвращается пока период задержки не прошел. Если возврат завершения В/В происходит, функция не возвращается и функция завершения В/В не выполнена. Если APC поставлен в очередь в резьбу, функция не возвращается и функция APC не выполнена. Если bAlertable - ИСТИНА и резьба, которые были названы эта функция - та же резьба, которая была названа расширенная функция В/В (ReadFileEx или WriteFileEx), функциональный возврат когда или период задержки прошел или когда функция возврата завершения В/В происходит. Если возврат завершения В/В происходит, функция завершения В/В названа. Если APC поставлен в очередь в резьбу (QueueUserAPC), функция возвращается когда или таймерный- период прошел или когда функция APC названа.
Обратные Величины
Обратная величина является нулем если определенный интервал времени истекал бы. Обратная величина - WAIT_IO_COMPLETION если функция возвращалась бы из-за одной или более функций возврата завершения В/В. Это может случиться только если bAlertable - ИСТИНА, и если резьба, которая была названа функция SleepEx - та же резьба, которая была названа расширенная функция В/В.
Замечания
Эта функция может быть использована ReadFileEx или функциями WriteFileEx, чтобы приостанавливать резьбу пока действие В/В не завершено. Эти функции определяют программу завершения, которая должна быть выполнена когда действие В/В завершено. Для программы завершения, которая нужно выполняться, резьба, которая была названа функция В/В должна быть в состоянии ожидания alertable когда функция возврата завершения происходит. Резьба вступает в состояние ожидания alertable вызывая также SleepEx, MsgWaitForMultipleObjectsEx, WaitForSingleObjectEx, или WaitForMultipleObjectsEx, с функциональным параметром bAlertable установленным в ИСТИНУ.
Резьба может освободить разность своей вырезки времени вызывая эту функцию со временем сна нулевых миллисекунд. Вы должны быть осторожными при использовании SleepEx и DDE. Если резьба создает любое окно, она должна обработать сообщения. DDE ПОСЫЛАЕТ сообщения во все окно в системе. Если у вас есть резьба, которая использует функцию ожидания без интервала задержки, система будет тупиком. Следовательно, если у вас есть резьба, которая создает окно, используйте MsgWaitForMultipleObjects или MsgWaitForMultipleObjectsEx, а не SleepEx.
Смотри Также
MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx, QueueUserAPC, ReadFileEx, Sleep, WaitForMultipleObjectsEx, WaitForSingleObjectEx , WriteFileEx
|
|
|
|
| |