реализация потоков в nodejs - PullRequest
       75

реализация потоков в nodejs

0 голосов
/ 20 января 2020

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

Рассмотрим следующий фрагмент,

fs.readdirSync('my/path', (err, files) => {
  if (err) throw err;
  for(let i=0; i<files.length; i++){
    fs.readFile(files[i], (err, data) => {
      if (err) throw err;
      console.log(data);
    });
  }
});

Теперь, в предположении нет. файлов в my/path составляет 10 . Теперь, поскольку nodejs деликатно использует один поток для события oop, в нем осталось 7 ядер ЦП. Как nodejs справится с этим? Есть ли какая-либо внутренняя очередь в nodejs или это чисто операционная система?

1 Ответ

0 голосов
/ 20 января 2020
Единственный процесс

Node js всегда будет использовать только одно ядро ​​для выполнения своей задачи, для асинхронного поведения (код, который вы упомянули) и неблокирующего события ввода / вывода l oop будет использовать внутренний уровень ядра потоки для работы, но как процесс с одним узлом будет активным только одно ядро ​​ЦП.

Для использования многоядерных процессоров вашей машины вы можете

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

...