Agendamento de Threads
Cada segmento tem uma prioridade de segmento atribuída a ele. Threads criados dentro do common language runtime são inicialmente atribuídos a prioridade de ThreadPriority.Normal. Threads criados fora do tempo de execução retém a prioridade que elas tinham antes que inseriram o ambiente gerenciado. Você pode obter ou definir a prioridade de qualquer segmento com o Thread.Priority propriedade.
Threads são agendados para execução com base em suas prioridades. Embora os threads estão em execução dentro do runtime, todos os threads são atribuídos frações de tempo do processador pelo sistema operacional. Os detalhes do algoritmo de programação usada para determinar a ordem na qual os threads são executadas varia de acordo com cada sistema operacional. Em alguns sistemas operacionais, o segmento com a prioridade mais alta (aqueles segmentos que podem ser executadas) sempre está programado para ser executado primeiro. Se vários threads com a mesma prioridade estão disponíveis, o Agendador percorre os threads de prioridade igual, dando uma fatia de tempo fixo no qual executar a cada segmento. Como um segmento com uma prioridade mais alta está disponível para ser executado, os segmentos de prioridade inferiores não obter executar. Quando não há segmentos executáveis não mais em uma determinada prioridade, o Agendador move para a próxima prioridade mais baixa e agenda os threads em que prioridade de execução. Se um segmento de prioridade mais alto se torne executável, o thread de prioridade inferior é superado e o segmento de maior prioridade pode ser executada novamente. Acima de tudo isso, o sistema operacional também pode ajustar as prioridades do thread dinamicamente conforme a interface do usuário do aplicativo sejam movida entre o primeiro e segundo plano. Outros sistemas operacionais podem optar por usar um algoritmo de programação diferente.
Consulte também
Conceitos
Gerenciado e Threading no Microsoft Windows