Cursos / Informática para Internet / Desenvolvimento Backend / Aula

arrow_back Aula 02 - Gerenciando pacotes e fundamentos do Node.js

Event loop


Vamos agora ver como funciona o Node.js por dentro. Vamos estudar o event loop uma tecnologia que permite ao Node.js atender múltiplos usuários simultaneamente de forma simples e descomplicada. Como o Node.js faz isso?

Figura 1 - Event loop

Descrição imagem

Veja a ilustração do event loop que mostra essa tecnologia. Perceba na imagem que existe um grande bloco chamado event loop que executa todas as operações em sequência. Ou seja, as instruções são executadas uma após a outra, mesmo que oriundas de múltiplos usuários.

No entanto, isso pode gerar um problema quando o tratamento de uma requisição for custoso, pois os outros usuários seriam impactados. Como o Node.js resolve isso?

Para resolver isso, o Node.js trata operações de entrada e saída (E/S) de maneira diferente das operações comuns. As operações comuns são executadas no próprio event loop, mas as operações de E/S não. As operações de E/S (que normalmente são mais custosas) são executadas à parte em threads gerenciadas pelo Node.js. Quando as operações de E/S são encerradas, o Node.js notifica através de um callback para que a resposta possa ser tratada no próprio event loop. Dessa forma, o event loop fica livre processando outras requisições enquanto as operações de E/S são realizadas.

Assim, do ponto de vista do programador, há uma única thread (fluxo de execução) o que também simplifica muito a programação, evitando a necessidade de lidar com concorrência e sincronia.

Essa técnica também traz vantagens do ponto de vista de recurso computacional, uma vez que criar uma thread por usuário é custoso do ponto de vista de recursos computacionais (uso de memória, principalmente).

Assim, com o event loop, o Node.js consegue tratar múltiplos usuários de forma prática e eficiente.

Para mais detalhes, assista a videoaula e acesse https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/


Versão 5.3 - Todos os Direitos reservados