In het algemeen krijgt een thread met een hogere prioriteit meer processortijd dan ‚‚n met een lagere prioriteit. Om preciezer te zijn, &os2; kijkt naar thread prioriteiten als meer dan ‚‚n thread intern gemerkt is met "klaar".

Daar tegenover staat dat threads die nu geblokkeerd zijn in het geheel geen CPU tijd nodig hebben. Prioriteiten doen er dan niet toe totdat de blokkering wordt opgeheven. Merk op dat op uw &os2; systeem het grootste gedeelte van de threads, in tijd gezien, ieder moment in "geblokkeerde" status staan.

&os2; is in staat om de thread prioriteiten op een zeer verfijnde wijze te beheren. Het onderscheidt vier prioritietsklassen:

  1. "Idle time priority" (1) is de laagste prioriteitsklasse. Dit betekent dat een thread alleen maar processortijd krijgt als er geen threads lopen met een hogere prioriteitsklasse. Zulke threads zijn nuttig voor het weghalen van werk dat moet worden gedaan, maar dat kan worden uitgesteld totdat de computer er tijd voor heeft.

  2. "Regular priority" (2) is de prioriteitsklasse die door de meeste threads wordt gebruikt. Het is tevens de standaard &os2; prioriteitsklasse voor een thread als deze zijn prioriteit niet expliciet wijzigt. &os2; varieert dynamisch prioriteitsniveaus tussen threads van deze klasse (meer daarover hieronder) om er zeker van te zijn dat geen enkele thread met deze klasse "gebrek lijdt" d.w.z. geen processortijd krijgt.

  3. "Foreground server priority" (4) is de tweede hoogste prioriteitsklasse voor threads die niet willen worden be‹nvloed door de dynamische prioriteitsvariaties die op "vaste" klasse typen worden uitgevoerd. Merk op dat zelfs, al heeft deze klasse de waarde 4, tijdkritische threads de prioriteit overnemen van threads uit deze klasse. &os2; doet toch enige prioriteitsvariaties met deze klasse gebaseerd op de activiteit van de thread en het systeem.

  4. "Time-critical priority" (3) is de hoogste prioriteitsklasse in &os2;. Een thread met een tijdkritische prioriteit zal onmiddellijk processortijd krijgen en zal niet worden onderbroken totdat zijn werk klaar is. Veel apparatuur stuurprogramma's zullen de CPU alleen maar afstaan aan threads met deze prioriteitsklasse.

    Zo'n thread moet alleen maar de kortst mogelijke CPU tijd gebruiken omdat hij niet onderbroken kan worden (behoudens door andere tijdkritische threads) en kan eenvoudig het systeem laten 'hangen'. Zelfs als het de CPU afstaat via DosSleep(0) (zie de documentatie voor DosSleep in de Toolkit documentatie *), zullen andere niet tijdkritische threads niet lopen. Deze klasse wordt daarom normaliter alleen maar gebruikt voor netwerk- en andere communicatie- of CD-writer- en andere multimedia programmatuur.

Binnen iedere prioriteitsklasse kan een thread een prioriteitsniveau instellen. Dit is een waarde tussen 0 en +31 die de voorrang aangeeft van een thread binnen een prioriteitsklasse en waar alleen maar rekening mee gehouden wordt als twee threads van dezelfde prioriteitsklasse met elkaar wedijveren.

Een paar voorbeelden: