Multithreading

Definição - o que significa multithreading?

Multithreading é um tipo de modelo de execução que permite que vários threads existam no contexto de um processo, de forma que sejam executados independentemente, mas compartilhem seus recursos de processo. Um thread mantém uma lista de informações relevantes para sua execução, incluindo o agendamento de prioridade, manipuladores de exceção, um conjunto de registros de CPU e o estado da pilha no espaço de endereço de seu processo de hospedagem.

Multithreading também é conhecido como threading.

Definirtec explica multithreading

O threading pode ser útil em um sistema de processador único, permitindo que o thread de execução principal responda à entrada do usuário, enquanto o thread de trabalho adicional pode executar tarefas de longa execução que não precisam da intervenção do usuário em segundo plano. O encadeamento em um sistema multiprocessador resulta na verdadeira execução simultânea de encadeamentos em vários processadores e, portanto, é mais rápido. No entanto, requer uma programação mais cuidadosa para evitar comportamentos não intuitivos, como condições de corrida, impasses, etc.

Os sistemas operacionais usam threading de duas maneiras:

  • Multithreading preventivo, no qual a troca de contexto é controlada pelo sistema operacional. A comutação de contexto pode ser realizada em um momento inapropriado, portanto, um thread de alta prioridade pode ser indiretamente substituído por um thread de baixa prioridade.
  • Multithreading cooperativo, em que a troca de contexto é controlada pelo thread. Isso pode levar a problemas, como deadlocks, se um encadeamento for bloqueado enquanto aguarda a liberação de um recurso.

As versões de 32 e 64 bits do Windows usam multithreading preventivo em que o tempo do processador disponível é compartilhado de forma que todos os threads obtenham uma fatia de tempo igual e sejam atendidos em um modo baseado em fila. Durante a troca de encadeamento, o contexto de um encadeamento antecipado é armazenado e recarregado no próximo encadeamento na fila. A fatia de tempo é tão curta que os threads em execução parecem estar executando em paralelo.

Esta definição foi escrita no contexto da Arquitetura de Computadores