Процессы в Windows - Wait функции
ОГЛАВЛЕНИЕ
Wait функции
Как можно приостановить работу потока? Существует много способов. Вот некоторые из них.
Функция Sleep() приостанавливает работу потока на заданное число миллисекунд. Если в качестве аргумента вы укажите 0 ms, то произойдет следующее. Поток откажется от своего кванта процессорного времени, однако тут же появится в списке потоков готовых к выполнению. Иными словами произойдет намеренное переключение потоков. (Вернее сказать, попытка переключения. Ведь следующим для выполнения потоком вполне может стать тот же самый.)
Функция WaitForSingleObject() приостанавливает выполнение потока до тех пор, пока не произойдет одно из двух событий:
- истечет таймаут ожидания;
- ожидаемый объект перейдет в сигнальное (signaled) состояние.
По возвращаемому значению можно понять, какое из двух событий произошло. Ожидать с помощью wait-функций можно большинство объектов ядра, например, объект "процесс" или "поток", чтобы определить, когда они завершат свою работу.
Функции WaitForMultipleObjects передается сразу массив объектов. Можно ожидать срабатывания сразу всех объектов или какого-то одного из них.
Пример 2. Программа создает два одинаковых потока и ожидает их завершения. Потоки просто выводят текстовое сообщение, которое передано им при инициализации. |
|