Операционные системы. Программирование в операционной среде Windows

25 включается в число планируемых — если только он не ждет какого-то события (например, ввода с клавиатуры). Выполнение потока можно приостановить не только при его создании с флагом CREATE SUSPENDED, но и вызовом функции SuspendThread: DWORD SuspendThread(HANDLE hThread); Разрешить выполнение потока можно вызовом функции ResumeThread'. DWORD ResumeThread(HANDLE hThread); Параметром этих функций является описатель потока, полученный при создании потока. В реальных приложениях надо быть осторожным с вызовами SuspendThread, так как нельзя заранее сказать, чем будет заниматься его поток в момент приостановки, не заблокирует ли он работу с некоторым ресурсом другим потокам. 2.5. Функция Sleep Поток может сообщить системе о том, что ему не нужно выделять процессорное время на определенный период, вызвав функцию Sleep'. VOID Sleep(DWORD dwMilliseconds); Эта функция приостанавливает поток на dwMniiseconds миллисекунд. Вызывая функцию Sleep, поток добровольно отказывается от остатка выделенного ему кванта времени. Можно вызвать Sleep и передать в dwMilliseconds нулевое значение. Тогда поток откажется от остатка своего кванта времени и заставит систему подключить к процессору другой поток. Однако система может снова запустить данный поток, если других планируемых потоков с тем же приоритетом нет. Можно вызвать функцию Sleep и передать в параметре dwMflliseconds значение INFINITE, вообще запретив планировать поток. По лучше корректно завершить поток, освободив его ОЯ и стек. 2.6. Переключение потоков Функция SwitchToThread позволяет подключить к процессору другой поток, если он есть: BOOL SwitchToThread() ; При вызове этой функции, система проверяет, есть ли поток, которому не хватает процессорного времени. Функция SwitchToThread позволяет потоку, которому не хватает процессорного времени, отнять этот ресурс у потока с более низким приоритетом. Она возвращает FALSE, если на момент ее вызова в системе нет ни одного потока, готового к исполнению, в ином случае — ненулевое значение.

RkJQdWJsaXNoZXIy MTY0OTYy