Generell erh„lt ein Thread mit einer h”heren Priorit„t mehr Prozessorzeit als einer mit einer niedrigen. Genau genommen betrachtet &os2; Thread-Priorit„ten immer dann, wenn mehr als ein Thread intern als "bereit" gekennzeichnet ist.

Im Gegensatz dazu erhalten Threads, die derzeit "blockiert" sind, niemals Prozessorzeit, egal welche Priorit„t sie haben. Ihre Priorit„t wird erst dann bedeutsam, wenn ihre Blockierung wieder aufgehoben wird. Beachten Sie, daá auf einem typischen &os2;-System die ganz groáe Mehrheit der laufenden Threads blockiert ist.

&os2; ist in der Lage, Thread-Priorit„ten in einer sehr detaillierten und leistungsf„higen Weise zu verwalten. Dabei wird zwischen vier Priorit„tsklassen unterschieden:

  1. "Idle time" (1) (engl. "idle" = Leerlauf) ist die niedrigste Priorit„tsklasse. Ein Thread in dieser Klasse erh„lt nur Prozessorzeit, wenn kein anderer Thread einer h”heren Klasse l„uft. Threads in dieser Klasse verrichten �blicherweise Arbeit, die zwar getan werden muá und zeitintensiv ist, die aber auch noch dann ausgef�hrt werden kann, wenn der Rechner sonst nichts zu tun hat.

  2. "Regul„r" (2) ist die Priorit„tsklasse, die die meisten Threads benutzen. Dies ist auáerdem die Standardklasse unter &os2;, die benutzt wird, wenn ein Thread seine Priorit„t nicht explizit „ndert. Zwischen den Threads dieser Klasse variiert &os2; dynamisch die Priorit„ten, damit keiner dieser Threads "verhungert" (d.h. �berhaupt keine Prozessorzeit erh„lt; hierzu sogleich mehr).

  3. "Foreground server" (4) ist die zweith”chste Priorit„tsklasse f�r Threads, die von den dynamischen Priorit„ts„nderungen der "regul„ren" Klasse nicht beeinfluát werden sollen. Obwohl diese Klasse den Wert 4 hat, haben zeitkritische Threads (sogleich) eine h”here Priorit„t als Threads dieser Klasse. &os2; variiert auch f�r diese Klasse Priorit„ten in einem gewissen Rahmen dynamisch, allerdings abh„ngig von der Aktivit„t des Threads und des gesamten Systems.

  4. "Zeitkritisch" (time-critical) (3) ist die h”chste Priorit„tsklasse unter &os2;. Ein Thread in dieser Klasse bekommt Prozessorzeit ohne Verz”gerung und wird nicht unterbrochen, bis seine Arbeit beendet ist. Viele Ger„tetreiber geben Prozessorzeit nur als Threads dieser Klasse ab.

    Ein solcher Thread sollte nur minimale Zeit beanspruchen, da er nicht unterbrochen werden kann (auáer durch andere zeitkritische Threads) und daher das System schnell aufh„ngen kann. Sogar wenn der Thread den Prozessor via DosSleep(0) freigibt (siehe DosSleep in der Toolkit-Dokumentation*), bekommen andere zeitkritische Threads keine Prozessorzeit. Diese Klasse wird daher �blicherweise nur f�r Netzwerk- und andere Kommunikationsanwendungen benutzt, oder CD-Brenner- und andere Multimedia-Software.

Innerhalb jeder Priorit„tsklasse kann ein Thread zus„tzlich einen Priorit„tswert von 0 bis +31 setzen, der den Vorrang des Threads gegen�ber anderen Threads der gleichen Klasse bestimmt. Dieser Wert wird nur ber�cksichtigt, wenn zwei Threads der gleichen Klasse laufen.

Einige Beispiele: