Я знаю, что при выполнении операций ввода-вывода nodejs выполняет работу в отдельном потоке, поэтому не может поток запустить в другом ядре? если да, то разве не только один процесс nodejs может использовать два ядра?Почему я должен запускать два или более экземпляра nodejs, когда я хочу хорошо использовать многоядерный процессор?
ответ
Узел делает асинхронный ввод-вывод, но ввод-вывод очень мало «работает» с точки зрения процессора. В основном это ожидание того, что ОС будет готова к обработке данных. Таким образом, процесс с одним узлом будет использовать только 1 процессорное ядро для фактической логики в самой программе вашего узла. Если вы максимизируете это ядро процессора и хотите, чтобы еще одна логика вашей реальной программы выполнялась одновременно, вам нужен другой процесс. Да, есть технически несколько нитей, используемых какой-либо узловой программой, но только один из них - это интенсивный процессор, который фактически интерпретирует ваш javascript.
Это в основном ждет, когда ОС будет готова к обработке данных. Таким образом, процесс с единственным узлом будет использовать только 1 ядро ЦП для фактической логики самой программы узла. Зачем?
Это по дизайну. Сделав этот особый выбор, узловые программы не должны иметь дело с сложными и подверженными ошибкам параллельными идиомами программирования, такими как потоки, семафоры, блокировки, взаимоблокировки и т. Д. Это всего лишь один из вариантов решения этой сложности. Он основан на двух основных наблюдениях: 1. Асинхронный ввод-вывод, по-видимому, в настоящее время рассматривается как наиболее эффективный и управляемый дизайн для высококонкурентных систем и 2. Большинство других идиом программирования для параллелизма относительно сложнее правильно кодировать. Это именно то, что выбрал node.js. Например, язык «go» сделал другой набор вариантов, благоприятствующих другим идиомам, которые позволяют многопоточность, блокирование, каналы, очередность сообщений и т. Д. Следовательно, программы go
лучше используют многоядерные машины.
** В большинстве случаев ожидается, что ОС будет готова к обработке данных. Таким образом, процесс с одним узлом будет использовать только 1 ядро ЦП для фактической логики в самой программе вашего узла. ** Почему? –
См. Мой обновленный ответ. –
- 1. therubyracer или nodejs, который я должен использовать?
- 2. Почему я должен использовать «я» в функции?
- 3. Какой общий процессор шаблонов я должен использовать?
- 4. Почему я хочу использовать ExpressionVisitor?
- 5. Когда/почему я хочу использовать Groovy @CompileStatic?
- 6. Почему и когда я должен использовать innerHTML
- 7. Иногда IIS недоиспользует многоядерный процессор
- 8. Когда я должен запускать node.js с вечно?
- 9. Должен ли я использовать это ключевое слово, когда я хочу обратиться к переменным экземпляра в методе?
- 10. Когда и почему я должен использовать NamedNativeQuery или NamedQuery аннотацию
- 11. Nodejs Должен ли я использовать Passport
- 12. Имеет ли переменная volatile здесь (многоядерный процессор)?
- 13. Когда и почему я должен использовать портлеты
- 14. Почему/когда я должен использовать модули dojo?
- 15. Должен ли я использовать инъекцию зависимостей, когда два экземпляра должны совместно использовать один третий экземпляр?
- 16. Когда я должен использовать или избегать субдоменов?
- 17. Почему я хочу использовать jQuery?
- 18. Почему я должен использовать интерфейсы?
- 19. Когда я хочу использовать NSPropertyMapping?
- 20. Должен ли я запускать или запускать сборку докеров?
- 21. Когда я должен использовать javax.swing.SwingUtilities.invokeLater()?
- 22. Почему я должен использовать UTC?
- 23. Почему я должен использовать WinDbg?
- 24. NodeJS, Express, почему я должен использовать app.enable ('trust proxy');
- 25. Использует ли ASP.NET по умолчанию многоядерный процессор?
- 26. Когда я должен использовать AQL?
- 27. Почему я должен использовать MXML?
- 28. Как я должен запускать приложение nodejs автоматически для тестов
- 29. Когда я должен использовать SQLTransaction
- 30. Я хочу использовать более элегантную конструкцию
Я бы отредактировал ваш вопрос, чтобы сделать его более понятным, но я не уверен, что вы просите быть честным. Если вы исправите заголовок, это поможет вам быстрее получить ответ :) – FraserK
Что-то вводило вас в заблуждение. Node.js - многопоточный движок. Читайте внимательно ознакомление здесь http://nodejs.org/about/. – cababunga