In het algemeen krijgt een thread met een hogere prioriteit meer processor tijd 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 is opgeheven. Merk op dat typisch op uw &os2; systeem, het grootste gedeelte van de threads op ieder moment in de tijd 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 processor tijd krijgt als er geen threads lopen met een hogere prioriteitsklasse. Zulke threads zijn nuttig voor het weghalen van werk dat moet worden gedaan, maar 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 als een thread 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 processor tijd 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, tijd kritische 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 tijd kritische prioriteit zal onmiddellijk processor tijd 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 tijd-kritische 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 tijd kritische 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: