Pool de threads como quando e quem usou:
Em primeiro lugar, quando usamos / instalamos o Node em um computador, ele inicia um processo entre outros processos que é chamado de processo de nó no computador, e continua em execução até que você o mate. E este processo em execução é nosso chamado single thread.
Portanto, o mecanismo de thread único facilita o bloqueio de um aplicativo de nó, mas esse é um dos recursos exclusivos que o Node.js traz para a mesa. Portanto, novamente se você executar seu aplicativo de nó, ele será executado em apenas um único thread. Não importa se você tem 1 ou milhão de usuários acessando seu aplicativo ao mesmo tempo.
Portanto, vamos entender exatamente o que acontece no único thread de nodejs quando você inicia seu aplicativo de nó. Inicialmente o programa é inicializado, então todo o código de nível superior é executado, o que significa que todos os códigos que não estão dentro de nenhuma função de retorno de chamada ( lembre-se de que todos os códigos dentro de todas as funções de retorno de chamada serão executados no loop de evento ).
Depois disso, todos os códigos dos módulos executados registram todo o retorno de chamada, por fim, o loop de eventos iniciado para sua aplicação.
Como discutimos antes, todas as funções de retorno de chamada e códigos dentro dessas funções serão executados no loop de eventos. No loop de eventos, as cargas são distribuídas em diferentes fases. De qualquer forma, não vou discutir sobre loop de eventos aqui.
Bem, para uma melhor compreensão do pool de Threads, estou pedindo que você imagine que, no loop de eventos, os códigos dentro de uma função de retorno de chamada são executados após a conclusão da execução de códigos dentro de outra função de retorno de chamada, agora se houver algumas tarefas, são realmente muito pesadas. Eles então bloqueariam nosso thread único nodejs. E é aí que entra o pool de threads, que é exatamente como o loop de evento, fornecido ao Node.js pela biblioteca libuv.
Portanto, o pool de threads não faz parte do nodejs em si, é fornecido pelo libuv para descarregar tarefas pesadas para o libuv, e o libuv executará esses códigos em suas próprias threads e, após a execução, o libuv retornará os resultados para o evento no loop de eventos.
O pool de threads nos dá quatro threads adicionais, que são completamente separados do thread único principal. E podemos realmente configurá-lo para até 128 threads.
Portanto, todos esses threads juntos formaram um pool de threads. e o loop de eventos pode então descarregar automaticamente tarefas pesadas para o pool de threads.
A parte divertida é que tudo isso acontece automaticamente nos bastidores. Não somos nós, desenvolvedores, que decidimos o que vai e o que não vai para o pool de threads.
Existem muitas tarefas que vão para o pool de threads, como
-> All operations dealing with files
->Everyting is related to cryptography, like caching passwords.
->All compression stuff
->DNS lookups