image

Acesse bootcamps ilimitados e +750 cursos pra sempre

70
%OFF
Article image
Julia Rocha
Julia Rocha15/07/2026 22:13
Compartilhe

Threads no Node.js: entendendo o que realmente acontece por trás do Event Loop

    "Node.js é single-thread." Você já deve ter ouvido essa frase — e talvez, como eu, tenha entendido errado: "então o Node só faz uma coisa por vez". Não é bem assim.

    A pegadinha do "single-thread"

    Esse "single-thread" fala só da Main Thread, onde a engine V8 roda seu JavaScript. É por isso que um loop pesado trava a aplicação inteira: enquanto a Main Thread está ocupada, mais nada roda.

    Mas o Node.js é bem mais que essa thread única. Por trás dela tem a libuv, uma biblioteca em C que sustenta o Event Loop. Ela manda tarefas como leitura de arquivos, algumas consultas DNS e certas operações de criptografia para um Thread Pool de 4 threads. Já chamadas de rede (HTTP, sockets) geralmente nem precisam disso — o próprio sistema operacional resolve. Quando o trabalho termina, o resultado volta pro Event Loop, que devolve o callback pra Main Thread na hora certa.

    Dá pra sentir isso na prática comparando uma leitura de arquivo síncrona com uma assíncrona:

    console.log('1. Início');
    
    fs.readFile('arquivo.txt', 'utf-8', (err, dados) => {
    console.log('2. Leitura concluída');
    });
    
    console.log('3. Fim');
    // Saída: 1, 3, 2 — a Main Thread não espera, ela segue em frente
    

    Por que isso é tão bom

    A Main Thread nunca fica travada esperando I/O. Enquanto um arquivo é lido ou uma requisição de rede acontece, ela segue livre pra atender outras coisas — é assim que o Node segura milhares de conexões gastando pouco recurso. E você, como dev, quase nunca precisa gerenciar thread nenhuma na mão: o Event Loop e a libuv cuidam disso.

    O limite dessa arquitetura

    Tudo isso funciona muito bem pra I/O, mas não ajuda em tarefas CPU-bound — processar imagem, renderizar vídeo, rodar um algoritmo pesado. Aqui o problema não é esperar, é consumir CPU mesmo, e se isso acontece na Main Thread, o Event Loop trava e a aplicação para de responder. Pra esses casos existem as Worker Threads, que rodam JS em paralelo de verdade, usando outros núcleos do processador.

    No fim das contas

    "Node.js é single-thread" não está errado, só está incompleto. O JS roda numa única thread, mas o runtime inteiro se apoia no Event Loop, na libuv e num Thread Pool pra não travar. Entender isso é a diferença entre só decorar a frase e realmente saber por que o Node escala tão bem — e quando vale trocar de estratégia com as Worker Threads.

    Compartilhe
    Recomendados para você
    AWS - Agentes de IA em Campo
    Riachuelo - Criando produtos com IA
    Michael Page - Criando Seu Primeiro Agente de IA
    Comentários (0)