Основы программирования в Win32API. Марапулец Ю.В. - 25 стр.

UptoLike

Составители: 

ный интервал времени. Интерактивные потоки, которые выводят определен-
ную информацию для пользователя, часто делают короткие паузы, чтобы дать
ему время для ознакомления с результатами. Применения режима ожидания
предпочтительнее задействования «пустого» цикла, поскольку в этом случае
не используется время центрального процессора.
Для осуществления паузы в течение заданного времени поток вызывает
следующие функции:
VOID Sleep (DWORD dwMilliseconds);
DWORD SleepEx(DWORD dwMilliseconds, // продолжительность паузы
BOOL bAlertable);…
Расширенная функция SleepEx() обычно работает совместно с функциями
фонового ввода/вывода и может использоваться для инициации команд чтения
или записи, не требуя их завершения. Эти операции выполняются в фоновом
режиме. По завершении операции система извещает об этом пользователя, об-
ращаясь к предусмотренной в программе процедуре обратного вызова. Фоно-
вый ввод/вывод (который иногда называют перекрывающимся вво-
дом/выводом) чаще всего применяется в интерактивных программах, которые
должны реагировать на команды пользователя, не прерывая работы со сравни-
тельно медленными устройствами, например с накопителем на магнитной лен-
те или с сетевым диском.
Параметр bAlertable функции SleepEx() имеет тип Boolean. Если этот пара-
метр равен TRUE, система может преждевременно возобновить выполнение по-
тока при условии, что перекрывающаяся операция ввода/вывода завершилась до
истечения заданного времени ожидания. В случае досрочного прерывания функ-
ция SleepEx() возвращает значение WAIT_IO_COMPLETION,
по истечении ука-
занного временизначение 0.
2.3.3. Получение информации о существующих потоках
По специальному запросу поток возвращает свои дескриптор и иденти-
фикатор. Указанные ниже функции позволяют получить информацию о теку-
щем потоке:
DWORD GetCurrentThreadId(VOID) ;
HANDLE GetCurrentThread(VOID);…
Результирующее значение функции GetCurrentThreadId() совпадает со
значением параметра lpIDThread после выполнения функции CreateThread() и
однозначно идентифицирует поток в системе. Хотя идентификатор потока ну-
жен лишь для незначительного количества функций Win32 API, он может ис-
пользоваться с целью мониторинга системных потоков без необходимости
поддерживать открытый дескриптор для каждого потока. Открытый дескрип-
тор защищает поток от уничтожения.
25
ный интервал времени. Интерактивные потоки, которые выводят определен-
ную информацию для пользователя, часто делают короткие паузы, чтобы дать
ему время для ознакомления с результатами. Применения режима ожидания
предпочтительнее задействования «пустого» цикла, поскольку в этом случае
не используется время центрального процессора.
     Для осуществления паузы в течение заданного времени поток вызывает
следующие функции:

VOID Sleep (DWORD dwMilliseconds);
DWORD SleepEx(DWORD dwMilliseconds,          // продолжительность паузы
               BOOL bAlertable);…

     Расширенная функция SleepEx() обычно работает совместно с функциями
фонового ввода/вывода и может использоваться для инициации команд чтения
или записи, не требуя их завершения. Эти операции выполняются в фоновом
режиме. По завершении операции система извещает об этом пользователя, об-
ращаясь к предусмотренной в программе процедуре обратного вызова. Фоно-
вый ввод/вывод (который иногда называют перекрывающимся вво-
дом/выводом) чаще всего применяется в интерактивных программах, которые
должны реагировать на команды пользователя, не прерывая работы со сравни-
тельно медленными устройствами, например с накопителем на магнитной лен-
те или с сетевым диском.
     Параметр bAlertable функции SleepEx() имеет тип Boolean. Если этот пара-
метр равен TRUE, система может преждевременно возобновить выполнение по-
тока при условии, что перекрывающаяся операция ввода/вывода завершилась до
истечения заданного времени ожидания. В случае досрочного прерывания функ-
ция SleepEx() возвращает значение WAIT_IO_COMPLETION, по истечении ука-
занного времени – значение 0.



          2.3.3. Получение информации о существующих потоках

      По специальному запросу поток возвращает свои дескриптор и иденти-
фикатор. Указанные ниже функции позволяют получить информацию о теку-
щем потоке:
DWORD GetCurrentThreadId(VOID) ;
HANDLE GetCurrentThread(VOID);…
     Результирующее значение функции GetCurrentThreadId() совпадает со
значением параметра lpIDThread после выполнения функции CreateThread() и
однозначно идентифицирует поток в системе. Хотя идентификатор потока ну-
жен лишь для незначительного количества функций Win32 API, он может ис-
пользоваться с целью мониторинга системных потоков без необходимости
поддерживать открытый дескриптор для каждого потока. Открытый дескрип-
тор защищает поток от уничтожения.
                                     25