2011-01-05 4 views
5

У меня есть два вопроса noob:Что произойдет, если один поток выйдет из строя в процессе?

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

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

ответ

3

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

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

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

0
  1. node.js разработан, чтобы быть чрезвычайно легким и называется только в случае необходимости. Таким образом, каждый поток обрабатывает один запрос, а затем завершает работу. Если вы вызовете/mypage, node.js обработает запрос, а затем завершится. Это приводит к повышению производительности при сохранении небольшого размера.
  2. Если есть исключение, и оно правильно обработано, то оно выдаст ошибку в соответствии с тем, как вы ее определили. Javascript - это язык или язык. Любая ошибка приведет к тому, что javascript вызовет ошибку и сбой, поэтому вам необходимо убедиться, что вы обрабатываете все возможные ошибки.
0

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

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

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

Смежные вопросы