A prioridade importa apenas quando há mais threads executáveis do que os núcleos de CPU disponíveis. Quando isso acontece, a prioridade controla quais threads são executados. Na maioria dos sistemas, não há computação suficiente acontecendo para qualquer contenção na CPU: os threads estão todos bloqueados , esperando que algo aconteça. Isso pode estar esperando você digitar alguma coisa, mover o mouse, tocar na tela ou chegar dados a partir do disco, da rede, de algum outro dispositivo conectado ou de outro segmento concluir o trabalho em dados críticos estrutura. Pode estar aguardando que parte do programa seja lida no disco ou em alguma memória que foi trocada para ser lida novamente, em vez de ler explicitamente um arquivo.
No Windows, o planejador mantém uma fila de threads executáveis em cada nível de prioridade. Quando toma uma decisão de agendamento - que um encadeamento tenha esgotado seu quantum (tempo permitido antes que outra coisa precise ser executada), o que significa que outro encadeamento deve ter uma curva, ou o encadeamento foi bloqueado e não pode mais ser executável ou uma prioridade mais alta o encadeamento foi desbloqueado - o próximo encadeamento na fila no nível de prioridade máxima com qualquer encadeamento executável será agendado. Se o encadeamento em execução esgotou seu quantum, ele será colocado no final da fila. Se for o único encadeamento em seu nível de prioridade que pode ser executado e não houver outros encadeamentos de alta prioridade, mas não em execução, ele terá outra chance.
Nos sistemas multicore / multiprocessador, pode haver restrições sobre os núcleos nos quais um thread pode executar. Além disso, o sistema tenta manter os encadeamentos no núcleo ideal e dentro do nó NUMA, para que os dados do encadeamento provavelmente ainda estejam no cache desse núcleo e tenham acesso rápido aos dados criados. Os threads ainda serão executados em núcleos não ideais, se não houver escolha do que executar em seguida.
O sistema utiliza vários reforços de prioridade dinâmica e tamanhos quânticos dinâmicos para que o aplicativo em primeiro plano obtenha mais tempo (se necessário) do que os processos em segundo plano e para que os processos possam reagir rapidamente quando as operações de E / S forem concluídas (incluindo mouse, teclado e entrada na tela de toque). Além disso, o aumento de prioridade é usado para contornar inversões de prioridade, onde um encadeamento de alta prioridade aguarda um recurso que um encadeamento de baixa prioridade está mantendo no momento. Se também houver um encadeamento de prioridade média em execução, ele deixará de lado o encadeamento de baixa prioridade do tempo do processador, mantendo o encadeamento de alta prioridade. Portanto, o encadeamento de baixa prioridade é temporariamente aumentado para o de maior prioridade, assim obtém tempo e, esperançosamente, libera o recurso necessário ao encadeamento de alta prioridade.
Antes do Windows Vista, a prioridade do encadeamento não tinha efeito na rapidez com que as operações de E / S eram concluídas. Desde o Windows Vista, as E / Ss também podem ter uma prioridade, que por padrão vem da prioridade do encadeamento.
Resumo: você não verá nenhum efeito de alterar as prioridades de encadeamento, a menos que sua CPU esteja muito carregada, e mesmo assim o efeito será mínimo. Se o processo tiver que esperar por E / S ou não estiver disputando outros processos pelo tempo da CPU, ele já estará executando o mais rápido possível e a alteração da prioridade não o tornará mais rápido.