Кластер и вилка одинаковы? - PullRequest
0 голосов
/ 23 июня 2018

Я много читал о системе node.js и немного растерялся.

У меня 4-х ядерный процессор.

В node.js, Чтобы создать новую тему, я должен сделать

var child = require('child_process').fork('child.js');
child.on("message", function(){});
  • Это запустит код в новом потоке под CPU # 0.
  • Каждый новый поток таким образом будет создаваться на CPU # 0, пока память не будет заполнена.
  • Чтобы использовать ЦП № 1, № 2 и № 3, мне нужно использовать cluster, верно?
  • Так что я могу использовать оба, fork и cluster верно?
  • Если cluster использовать fork, то в основном это создает только 4 потока? Это правильно?
  • Является ли process.id реальным идентификатором процесса, а не нитью? не идентификатор потока?

Итак, моя картина такова:

cpu #0:
  thread #0
  thread #1
  thread #2
  thread #3
cpu #1
  thread #0
  thread #1
  thread #2
  thread #3
so on..

Я прав? Создает ли кластер только потоки?

1 Ответ

0 голосов
/ 24 июня 2018

Это будет запускать код в новом потоке под процессором № 0.

Неверно.Операционная система определит, на каком ядре она работает (и может не всегда оставаться на одном ядре).Это полностью вещь для ОС.И имейте в виду, что ОС обрабатывает / выделяет все потоки, а не только потоки node.js.

Что касается различия между child_process.fork и cluster ... Из документация по кластеру node.js :

Рабочие процессы порождаются с помощью метода child_process.fork (), так что они могут связываться с родителем через IPC и передавать серверные дескрипторы обратно.и далее.

Таким образом, кластер на самом деле с использованием child_process.fork для начала.

Но к этому добавляются дополнительные функции: например, если вы используете http-сервер, кластер может «распределять входящие соединения» по дочерним процессам.Так что, если вы не используете это для чего-то с входящими соединениями, которые должны быть распределены, вам, вероятно, не нужно cluster.

...