Programación de subprocesosScheduling threads

Cada subproceso tiene una prioridad de subproceso asignada a él.Every thread has a thread priority assigned to it. A los subprocesos creados en Common Language Runtime se les asigna inicialmente la prioridad de ThreadPriority.Normal.Threads created within the common language runtime are initially assigned the priority of ThreadPriority.Normal. Los subprocesos creados fuera del tiempo de ejecución mantienen la prioridad que tenían antes de entrar en el entorno administrado.Threads created outside the runtime retain the priority they had before they entered the managed environment. Puede obtener o establecer la prioridad de cualquier subproceso con la propiedad Thread.Priority.You can get or set the priority of any thread with the Thread.Priority property.

Los subprocesos están programados para ejecutarse según su prioridad.Threads are scheduled for execution based on their priority. Aunque los subprocesos se ejecutan durante el tiempo de ejecución, el sistema operativo asigna intervalos de tiempo de procesador a todos los subprocesos.Even though threads are executing within the runtime, all threads are assigned processor time slices by the operating system. Los detalles del algoritmo de programación utilizado para determinar el orden en que se ejecutan los subprocesos varían en función de cada sistema operativo.The details of the scheduling algorithm used to determine the order in which threads are executed varies with each operating system. En algunos sistemas operativos, el subproceso con la prioridad más alta (de entre los subprocesos que se pueden ejecutar) está programado siempre para que se ejecute primero.Under some operating systems, the thread with the highest priority (of those threads that can be executed) is always scheduled to run first. Si hay disponibles varios subprocesos con la misma prioridad, el programador recorre los subprocesos con dicha prioridad, dando a cada subproceso un intervalo de tiempo fijo para su ejecución.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. Siempre que un subproceso con una prioridad más alta esté disponible para su ejecución, los subprocesos con menor prioridad no se llegan a ejecutar.As long as a thread with a higher priority is available to run, lower priority threads do not get to execute. Si no hay más subprocesos ejecutables con una prioridad determinada, el programador pasa a la siguiente prioridad más baja y programa la ejecución de los subprocesos que tienen esa prioridad.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. Si un subproceso de prioridad superior se convierte en ejecutable, se relega el subproceso de menor prioridad y el subproceso con mayor prioridad se puede ejecutar una vez más.If a higher priority thread becomes runnable, the lower priority thread is preempted and the higher priority thread is allowed to execute once again. Sobre todo, el sistema operativo también puede ajustar las prioridades de los subprocesos de forma dinámica como una interfaz de usuario de la aplicación se mueve entre el primer y segundo plano.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. Otros sistemas operativos puede optar por utilizar un algoritmo de programación diferente.Other operating systems might choose to use a different scheduling algorithm.

Vea tambiénSee also