Plánování vláken

Každé vlákno má přiřazenou prioritu vlákna. Vlákna vytvořená v modulu CLR (Common Language Runtime) mají zpočátku přiřazenou prioritu ThreadPriority.Normal. Vlákna vytvořená mimo modul runtime si zachovají prioritu, kterou měli před vstupem do spravovaného prostředí. Můžete získat nebo nastavit prioritu libovolného vlákna s Thread.Priority vlastností.

Vlákna jsou naplánovaná na spuštění na základě jejich priority. I když se vlákna spouští v rámci modulu runtime, operační systém přiřazuje všechna vlákna časových řezů procesoru. Podrobnosti o plánovacím algoritmu použitém k určení pořadí, ve kterém se vlákna spouští, se liší podle jednotlivých operačních systémů. V některých operačních systémech je vlákno s nejvyšší prioritou (z vláken, která lze spustit), vždy naplánováno tak, aby se spustilo jako první. Pokud je k dispozici více vláken se stejnou prioritou, plánovač prochází vlákny s danou prioritou, čímž každému vláknu poskytne pevný časový řez, ve kterém se má provést. Dokud je vlákno s vyšší prioritou k dispozici ke spuštění, vlákna s nižší prioritou se nespustí. Pokud v dané prioritě nejsou spuštěná další vlákna, plánovač se přesune na další nižší prioritu a naplánuje vlákna s danou prioritou pro spuštění. Pokud se vlákno s vyšší prioritou spustí, vlákno s nižší prioritou se předpne a vlákno s vyšší prioritou se může spustit znovu. Kromě toho může operační systém také dynamicky upravovat priority vláken, protože uživatelské rozhraní aplikace se přesouvá mezi popředím a pozadím. Jiné operační systémy se můžou rozhodnout použít jiný algoritmus plánování.

Viz také