Realizacja wielowątkowości polega na przydzielaniu wątkom kwantów czasu, czyli czasu procesora. W NT Server kwant czasu ma stały czas i wynosi 120 ms. W NT WorkStation długość ta jest zmienna i wynosi 20, 40 lub 60 ms.
Za decyzję o tym, który wątek w danym momencie dostanie kwant czasu odpowiada Scheduler. Jest on wywoływany gdy:
W zależności od zaistniałej sytuacji Scheduler uruchamia funkcję FindReadyThread
lub ReadyThread
. FindReadyThread
uruchamia się gdy procesor się zwalnia i przydziela
go pierwszemu wątkowi z najwyższej niepustej kolejki w "Liście Dyspozytora".
Jest to lista 31 kolejek (numer = priorytet) wszystkich gotowych do wykonania wątków.
Do listy tej wątki są wkładane przez funkcję ReadyThread
, która jest uruchamiana
gdy pojawia się nowy, gotowy do wykonania wątek. Wtedy ReadyThread
porównuje priorytet
tego wątku z priorytetem wątku siedzącego w procesorze i jeśli jest on równy bądź
wyższy to wątek jest wyciągany z procesora i unieszczany NA POCZĄTKU odpowiedniej kolejki
w Liście Dyspozytora. W przeciwnym przypadku to nowy wątek jest umieszczany NA KOŃCU
odpowiedniej kolejki Listy Dyspozytora.