Thread

Definição

Thread é a menor unidade de execução dentro de um processo.
Enquanto processos são independentes entre si, threads compartilham o mesmo espaço de memória do processo ao qual pertencem — o que permite comunicação rápida, mas também exige cuidado com sincronização.

Um processo pode conter múltiplas threads executando diferentes partes de seu código simultaneamente, o que permite maior eficiência em tarefas concorrentes ou paralelas.

Objetivos do uso de Threads

  • Realizar múltiplas tarefas dentro de um mesmo processo, aproveitando o compartilhamento de memória.
  • Aumentar a responsividade de aplicações, mantendo a interface ativa enquanto outras tarefas são executadas.
  • Aproveitar múltiplos núcleos de CPU (quando combinado com paralelismo real).
  • Melhorar o desempenho de tarefas que não dependem entre si, como downloads simultâneos ou cálculos em paralelo.

Exemplo prático

import threading
import time

def tarefa(nome, tempo):
    for i in range(3):
        print(f'{nome} - passo {i}')
        time.sleep(tempo)

# Criando duas threads
t1 = threading.Thread(target=tarefa, args=("Thread A", 1))
t2 = threading.Thread(target=tarefa, args=("Thread B", 0.5))

# Inicia as duas threads simultaneamente
t1.start()
t2.start()

# Aguarda as duas threads terminarem antes de continuar
t1.join()
t2.join()

Saída esperada

Thread A - passo 0
Thread B - passo 0
Thread B - passo 1
Thread A - passo 1
Thread B - passo 2
Thread A - passo 2

Note que as duas threads rodam concorrentemente, intercalando seus passos, mesmo dentro de um único processo.

O ciclo de execução com Threads

[Processo]
   ├── Thread A --> executa tarefa 1
   └── Thread B --> executa tarefa 2 (em paralelo ou intercalado)
  • As threads compartilham memória e variáveis globais.

  • O sistema operacional gerencia o agendamento das threads (concorrência preemptiva).

  • Problemas como condições de corrida (race conditions) podem ocorrer sem sincronização adequada.

⚠️ Ao usar threads, é necessário atenção ao acesso simultâneo a variáveis compartilhadas. Mecanismos como locks ou semaphores podem ser usados para evitar inconsistências.

Nota: Em Python, por causa do GIL (Global Interpreter Lock), múltiplas threads não executam código Python puro ao mesmo tempo em múltiplos núcleos. No entanto, tarefas de I/O (como leitura de arquivos ou requisições de rede) ainda se beneficiam bastante de múltiplas threads.

Relacionados

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com