2010-10-29 2 views
1

Я читал, что V8 не многопоточен и не может быть по дизайну.Многопроцессор с v8 и node.js

Это правда? Это действительно так, что у меня может быть сценарий, оптимизированный для одновременного запуска (на node.js), но этот параллелизм не может распространяться на несколько процессоров? Я подумал, что это была серьезная причина для параллельного дизайна.

ответ

1

Что касается node.js, это не одновременный, а асинхронный. Существует один поток и один цикл событий, который обрабатывает все IO в node.js.

Есть несколько инструментов для параллелизма в node.js, которые в основном вращаются вокруг нескольких процессов. Но, как и все node.js, они находятся на ранних стадиях разработки. Например, вы можете управлять несколькими рабочими процессами с помощью fugue, или вы можете использовать возможно знакомый Web Workers API, используя node-worker.

0

См. limiting execution time. Это возможно, но я не уверен, насколько вероятно, что это будет так же просто, как сказать Java.

0

С v0.6 вы можете использовать cluster facility.

Связь между отдельными процессами узла вызывает некоторые накладные расходы, и из-за этого поддержка v8 isolates рассматривалась в течение некоторого времени, но в конечном итоге это было not pursued из-за неадекватного улучшения или компромисса сложности.

(The v8 изоляты позволит использование потоков вместо процессов, что позволяет более эффективной коммуникации.)

3

для узла v0.8 и выше, модуль https://github.com/audreyt/node-webworker-threads теперь обеспечивает один и тот же веб-работник API, реализованный с собственные потоки, предназначенные для многоядерного планирования, с более низкой сериализацией & рабочих накладных расходов на рабочих мест по сравнению с процессом-узлом-рабочим модулем.

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