Что произойдет, если один поток вылетает в процессе?

StackOverflow https://stackoverflow.com/questions/4605026

  •  25-09-2019
  •  | 
  •  

Вопрос

У меня два вопроса Noob:

1) Почему Node.js работает в одном потоке? Почему бы он не просто использует сам процесс? Или каковы преимущества работы в потоке вместо процесса?

2) Что произойдет, если поток в процессе разбился (я знаю, что, что не обрабатываемое исключение, вызвало процесс выхода), но что произойдет, если его правильно бросится? или с исключениями, как исключения с плавающей точкой. Будет ли процесс также сбиваться?

Это было полезно?

Решение

Я думаю, что вы немного запутались о том, какие «однопоточные» значит в этом случае. Node.js сама использует несколько потоков на заднем плане, чтобы обрабатывать иным образом блокировать вызовы в асинхронном виде.

Node.js Core, JavaScript Engine, является одиночной резьбой. Отсутствие мультипоток и наличие петли событий делает программирование в целом более проще. Короче говоря, вам не нужно иметь дело со всеми проблемами параллелизма, что многопотока приносит с собой, ваш код - это гораздо более детерминированным.

В случае, если поток вылетает, это совершенно не имеет значения, было ли это единственным или одним из многих, если код сбивает лучшее, что вы можете надеяться, так это то, что программа умирает с ней, ничто не было бы более неприятным, чем проводить программу, продолжая работать с частично испорченное государство. Представьте себе, что сбой несет ответственность за сохранение данных на диск, и теперь вы программируете, продолжаете работать, не экономят снова.

Другие советы

  1. Node.js предназначен для чрезвычайно легкого и вызывается только при необходимости. Таким образом, каждая нить обрабатывает один запрос, то выходит. Если вы звоните / MyPage, Node.js будет обработать запрос, а затем завершится. Это приводит к лучшему характеристику, сохраняя небольшую площадь
  2. Если есть исключение, и он правильно обрабатывается, то он бросит ошибку в соответствии с тем, как вы его определили. JavaScript все или ничего или нет. Любая ошибка приведет к тому, что JavaScript выбрасывает ошибку и сбой, вот почему вам нужно убедиться, что вы обрабатываете все возможные ошибки.

Запуск программы в процессе или по одному резьбу одно и то же. У каждого процесса есть основной нить. В зависимости от языка программирования и платформы дополнительные потоки могут использоваться для выполнения частей вашей программы одновременно. Node.js не имеет возможности начать дополнительные потоки.

Таким образом, у вас нет возможности запустить кусочки вашей программы параллельно, помимо начала новых процессов. Несколько потоков в одном процессе имеют одну и ту же память, в то время как процессы не. Когда вам нужно делиться информацией между процессами, вы должны использовать сообщение прохождения.

Недостатком передачи сообщений является то, что он медленнее, чем обмен информацией через память. Преимущество заключается в том, что вам не нужно рассуждать о мультипном состоянии объектов в вашей памяти и как убедиться, что эти объекты не становятся несовместимыми.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top