2015-12-03 2 views

ответ

4

node.js использует только один поток/ядро ​​для запуска интерпретатора Javascript.

Но node.js выполняет и может использовать более одного потока/ядра в различных библиотечных функциях или дополнительных функциях, таких как ввод-вывод файлов, которые реализованы на C++. Фактически библиотека libuv, которую node.js использует для ввода-вывода файлов, использует опрос потоков как часть его реализации асинхронного, неблокирующего ввода-вывода файлов. Это не влияет на «одиночную резьбу» интерпретатора Javascript, но помогает в реализации внешних функций, таких как асинхронный ввод-вывод файлов.

Итак, если ваше дополнение использует более одного потока на своем C++, тогда все в порядке. Он должен будет вернуться к одному основному потоку, на котором запущен интерпретатор Javascript.

Но, что произойдет, если я создам NodeJS C/C++ Addon, который имеет многопоточность?

Ваш аддон C++ может использовать несколько потоков в своей реализации, если это необходимо. Если он работает с несколькими потоками, ему будет необходимо связываться с основным потоком Javascript поточно-безопасным способом.

0

nodejs сам по себе не ограничен однопоточным, но выполняется код js. Nodejs и все аддоны, которые вы используете в c/C++, могут порождать потоки внутренне, если это необходимо.

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