ПредишенСледващото

Системата разпределя процесорното време за всички активни теми въз основа на техните приоритетни нива, които варират 0-31.

По-ниското ниво е запазено и възлага специална система конец страница зануляване.

Когато системата свързва процесор за поток, обработва потоци със същия приоритет като равна (на карусел). След като всички потоците с приоритет ще получат квантова и при условие, че те вече не изисква процесор, постъпления OS до потоци с по-нисък приоритет.

Има вероятност, че процесорът обработва непрекъснато потока, например с приоритет 31. Така че тече по-нисък приоритет никакъв шанс да се свърже с процесора. Тази ситуация се нарича задръстванията (глад - Hang).

Създаване на част от потока с относителен приоритет на празен ход:

ДРЪЖКА hThread = CreateThread (NULL, 0, ThreadFunc, NULL, CREATE_SUSPENDED, dwThreadID); SetThreadPriority (hThread, THREAD_PRIORITY_IDLE); ResumeThread (hThread);

CreateThread винаги създава нишка с относителния приоритет на нормалното.

За да присвоите относителен приоритет на празен ход нишка, трябва да създадете спряно нишка, която минава CREATE_SUSPENDED CreateThread флага, а след това да предизвика SetThreadPriority и настройте желаната приоритет.

Пауза и възобновяване на потоци:

Задържане поток изпълнение може също така да използвате функцията за повикване

DWORD SuspendThread (ДРЪЖКА hThread);

което увеличава разходомер престой на. На успех функцията връща предишната стойност на празен ход или брояча $ FFFFFFFF.

За да се възобнови потока трябва да бъде от друга нишка, за да извикате функцията

DWORD ResumeThread (ДРЪЖКА hThread);

което намалява времето за престой брояч от една страна, и, ако е 0, потокът ще започне да се изпълнява.

Спрете притока може да бъде не повече от 127 пъти.

На следващо място, трябва да се обадите ResumeThread и потокът ще бъде включен в планирания брой. Кажете предварително, когато нишката получава процесорно време, не е възможно, но разработчикът вече смята нов приоритет

Нишката може да каже на системата да не се разпределя процесорно време, за да го за определен период, което води до:

VOID Sleep (DWORD dwMilliseconds);

Тази функция спира нишката на dwMilliseconds милисекунди.

Причиняване на съня, тече доброволно се отказва от баланса, предвиден за него отрязък от време.

Системни спирки текат разпредели процесорно време за периода приблизително равна на предварително определена, тъй като Windows не е система за реално време.

Можете да се обадите на съня и да премине в dwMilliseconds стойност безкрайна, по принцип за забрана на планираното поток.

Можете да се обадите на съня и да премине в dwMilliseconds нула. След това можете да се откаже от останалата част от времето му парче и да си система, свързана с процесор друга нишка.

Подкрепете проекта - споделете линка, благодаря!