![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Засыпание и переключение потоков
VOID Sleep (DWORD dwMilliseconds);
Эта функция приостанавливает поток па dwMilliseconds миллисекунд. Отметим несколько важных моментов, связанных с функцией Sleep.
Вызывая Sleep, поток добровольно отказывается от остатка выделенного ему кванта времени
Система прекращает выделять потоку процессорное время на период, пример но равный заданному, Все верно: если Вы укажете остановить поток на 100 мс, приблизительно на столько он и "заснет", хотя не исключено, что его сон про длится на несколько секунд или даже минут больше. Вспомните, Windows не является системой реального времени. Ваш поток может возобновиться в заданный момент, но это зависит от того, какая ситуация сложится в системе к тому времени.
Вы можете вызвать Sleep и передать в dwMilliseconds значение INFINITE, вообще запретив планировать поток. Но это не очень практично — куда лучше корректно завершить поток, освободив его стек и объект ядра.
Вы можете вызвать Sleep и передать в dwMilliseconds нулевое значение. Тогда Вы откажетесь от остатка своего кванта времени и заставите систему подключить к процессору другой поток. Однако система может снова запустить Ваш поток, если других планируемых потоков с тем же приоритетом нет.
BOOL SwitchToThread();
Функция SwitchToThread позволяет подключить к процессору другой поток (если он есть).
Вызов SwitchToThread аналогичен вызову Sleep с передачей в dwMilliseconds нулевого значения. Разница лишь в том, что SwitchToThread даетвозможность выполнять потоки с более низким приоритетом, которым не хватает процессорного времени, а Sleep действует без оглядки на "голодающие" потоки.
Определение периодов выполнения потока
BOOL GetThreadTimes(
HANDLE hThread,
PFILETIME pftCreationTime,
PFILETIME pftExitTime,
PFILETIME pftKernelTime,
PFILETIME pftUserTime
);
С помощью этой функции можно определить время, необходимое для выполнения сложного алгоритма.
GetThreadTimes не годится для высокоточного измерения временных интервалов.
Дата публикования: 2014-11-19; Прочитано: 444 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!