Pergunta

Eu tenho duas perguntas de novato:

1) Por que o node.js está sendo executado em um único thread?por que não usa apenas o próprio processo?OU Quais são as vantagens de executá-lo em um thread em vez de em um processo?

2) O que acontece se um thread em um processo travar (estou ciente de que uma exceção não tratada fará com que o processo seja encerrado), mas o que acontece se for capturado corretamente?ou com exceções como exceções de ponto flutuante.o processo também travará?

Foi útil?

Solução

Eu acho que você está um pouco confuso sobre o que significa "Único" neste caso. O próprio Node.js utiliza vários threads em segundo plano para lidar com as chamadas de outra forma de maneira assíncrona.

O Node.js Core, o mecanismo JavaScript, é um único rosqueado. A falta de rosqueamento múltiplo e a disponibilidade de um loop de eventos facilitam muito a programação. Em suma, você não precisa lidar com todos os problemas de simultaneidade que o Multi Threading traz consigo seu código é muito mais determinístico dessa maneira.

Caso um fio traida, é completamente irrelevante se este foi o único ou um de muitos, se o código travar a melhor coisa que você pode esperar é que o programa morra com ele, nada seria mais problemático do que fazer com que você continue a correr com estado parcialmente corrompido. Imagine o encadeamento que o Crashes foi responsável por salvar dados no disco e agora você continua sendo executado sem salvar novamente.

Outras dicas

  1. O Node.js foi projetado para ser extremamente leve e é chamado apenas quando necessário. Portanto, cada thread lida com uma solicitação e sai. Você ligue para /mypage, o Node.js processará a solicitação e depois será encerrado. Isso resulta em melhor desempenho, mantendo uma pequena pegada
  2. Se houver uma exceção e for tratada corretamente, ele lançará um erro de acordo com a forma como você o definiu. JavaScript é tudo ou nada de idioma. Qualquer erro fará com que o JavaScript lançasse um erro e falhe, é por isso que você precisa garantir que lida com todos os erros possíveis.

Executar um programa em um processo ou em thread único é a mesma coisa.Todo processo possui um thread principal.Dependendo da linguagem de programação e da plataforma, threads adicionais podem ser usados ​​para executar partes do seu programa simultaneamente.O Node.js não tem a possibilidade de iniciar threads adicionais.

Dessa forma, você não tem a possibilidade de executar partes do seu programa em paralelo além de iniciar novos processos.Vários threads em um único processo compartilham a mesma memória, enquanto os processos não.Quando você precisa compartilhar informações entre processos, você deve usar a passagem de mensagens.

A desvantagem da passagem de mensagens é que ela é mais lenta do que compartilhar informações através da memória.A vantagem é que você não precisa raciocinar sobre o estado mutável dos objetos em sua memória e como garantir que esses objetos não se tornem inconsistentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top