Plánování vlákenScheduling threads

Každé vlákno má přiřazenou prioritu vlákna.Every thread has a thread priority assigned to it. K vláknům vytvořeným v modulu CLR (Common Language Runtime) se zpočátku přiřadí priorita ThreadPriority.Normal.Threads created within the common language runtime are initially assigned the priority of ThreadPriority.Normal. Vlákna vytvořená mimo modul runtime uchovávají prioritu, kterou měly předtím, než se do spravovaného prostředí zadala.Threads created outside the runtime retain the priority they had before they entered the managed environment. Můžete získat nebo nastavit prioritu libovolného vlákna s vlastností Thread.Priority.You can get or set the priority of any thread with the Thread.Priority property.

Vlákna mají naplánované spouštění na základě jejich priority.Threads are scheduled for execution based on their priority. I když jsou vlákna spouštěna v modulu runtime, jsou všechna vlákna přiřazena časová období procesoru operačním systémem.Even though threads are executing within the runtime, all threads are assigned processor time slices by the operating system. Podrobnosti o algoritmu plánování použitého k určení pořadí, ve kterém jsou vlákna spouštěny, se liší u jednotlivých operačních systémů.The details of the scheduling algorithm used to determine the order in which threads are executed varies with each operating system. V některých operačních systémech je vlákno s nejvyšší prioritou (u těchto vláken, které lze spustit) vždy naplánováno na spuštění jako první.Under some operating systems, the thread with the highest priority (of those threads that can be executed) is always scheduled to run first. Pokud je k dispozici více vláken se stejnou prioritou, Plánovač cyklicky projde vlákna s touto prioritou, přičemž každé vlákno provede pevný časový úsek, ve kterém se má provést.If multiple threads with the same priority are all available, the scheduler cycles through the threads at that priority, giving each thread a fixed time slice in which to execute. Pokud je pro spuštění k dispozici vlákno s vyšší prioritou, nespustí se podprocesy s nižší prioritou.As long as a thread with a higher priority is available to run, lower priority threads do not get to execute. Pokud v dané prioritě neexistují žádná další spustitelný vlákna, Plánovač se přesune k další nižší prioritě a naplánuje vlákna v této prioritě pro provedení.When there are no more runnable threads at a given priority, the scheduler moves to the next lower priority and schedules the threads at that priority for execution. Pokud se vlákno s vyšší prioritou změní na spustitelný, vlákno s nižší prioritou je přerušeno a vlákno s vyšší prioritou je povoleno znovu spustit.If a higher priority thread becomes runnable, the lower priority thread is preempted and the higher priority thread is allowed to execute once again. Nad všemi možnostmi může operační systém dynamicky upravovat priority vláken, protože uživatelské rozhraní aplikace je přesunuto mezi popředí a pozadí.On top of all that, the operating system can also adjust thread priorities dynamically as an application's user interface is moved between foreground and background. Jiné operační systémy se můžou rozhodnout použít jiný algoritmus plánování.Other operating systems might choose to use a different scheduling algorithm.

Viz také:See also