Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Dword suspendthread(handle hthread);



Засыпание и переключение потоков

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; Прочитано: 397 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...