Pianificazione di threadScheduling threads

A ogni thread è assegnata una priorità specifica.Every thread has a thread priority assigned to it. Ai thread creati all'interno di Common Language Runtime viene inizialmente assegnata la priorità ThreadPriority.Normal.Threads created within the common language runtime are initially assigned the priority of ThreadPriority.Normal. I thread creati esternamente al runtime conservano la priorità che avevano prima di entrare nell'ambiente gestito.Threads created outside the runtime retain the priority they had before they entered the managed environment. È possibile ottenere o impostare la priorità di un thread con la proprietà Thread.Priority.You can get or set the priority of any thread with the Thread.Priority property.

L'esecuzione dei thread viene pianificata in base alla relativa priorità.Threads are scheduled for execution based on their priority. Anche se i thread vengono eseguiti all'interno del runtime, a tutti i thread vengono assegnati intervalli di tempo del processore dal sistema operativo.Even though threads are executing within the runtime, all threads are assigned processor time slices by the operating system. I dettagli dell'algoritmo di pianificazione usato per determinare l'ordine in cui vengono eseguiti i thread varia in base al sistema operativo.The details of the scheduling algorithm used to determine the order in which threads are executed varies with each operating system. In alcuni sistemi operativi, il thread con la priorità più alta (tra quelli eseguibili) è sempre pianificato per essere eseguito per primo.Under some operating systems, the thread with the highest priority (of those threads that can be executed) is always scheduled to run first. Se sono disponibili più thread con la stessa priorità, l'utilità di pianificazione scorre tali thread assegnando a ciascuno di essi un intervallo di tempo fisso per la loro esecuzione.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. Finché un thread con una priorità più alta è disponibile per l'esecuzione, i thread con priorità inferiore non verranno eseguiti.As long as a thread with a higher priority is available to run, lower priority threads do not get to execute. Quando non sono più presenti thread eseguibili con una priorità specifica, l'utilità di pianificazione passa alla successiva priorità più bassa e pianifica l'esecuzione dei thread associati a tale priorità.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. Se un thread con priorità maggiore diventa eseguibile, il thread con priorità inferiore viene interrotto e viene di nuovo consentita l'esecuzione del thread con priorità superiore.If a higher priority thread becomes runnable, the lower priority thread is preempted and the higher priority thread is allowed to execute once again. Oltre a quanto precedentemente detto, il sistema operativo può anche regolare le priorità dei thread in modo dinamico quando l'interfaccia utente di un'applicazione viene spostata in background dal primo piano.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. Altri sistemi operativi potrebbero scegliere di usare un algoritmo di pianificazione diverso.Other operating systems might choose to use a different scheduling algorithm.

Vedere ancheSee also