Приостановка и возобновление потока |
Поток выполнения можно приостановить, вызвав функцию SuspendThread (), И возобновитьс помощью функции ResumeThread (). Прототипы этих функций приведены далее. DWORD SuspendThread(HANDLE hThread); DWORD ResumeThread(HANDLE hThread); В обеих функциях дескриптор потока передается в параметре hThread. Каждый поток выполнения связан со своим счетчиком отсрочки (suspend count). Если этот счетчик равен нулю, поток не приостановлен. Если у счетчика ненулевое значение, значит, поток отложен. Каждый вызов функции SuspendThread () увеличивает счетчик отсрочки на единицу. Каждый вызов функции ResumeThred () уменьшает его. Отложенный поток возобновится, но только когда счетчик отсрочки достигнет нуля. Следовательно, для возобновления приостановленного потока в программе должно быть равное Количество ВЫЗОВОВ фуНКЦИЙ SuspendThread () И ResumeThred (). Обе функции возвращают упомянутое ранее значение счетчика отсрочки потока или -1 при возникновении ошибки.
|