Nodejs C/C++ 会用到多个Core吗?
Nodejs C/C++ Will use more than one Core?
我知道 fact NodeJS 在单核中运行。但是,如果我构建一个实现了多线程的 NodeJS C/C++ 插件会怎样?这个插件会消耗一个以上的核心(当它被认为是)?
nodejs本身并不局限于单线程,而是js代码的执行。如果需要,Nodejs 和您在 c/c++ 中编写的所有插件都可以在内部生成线程。
node.js 只使用一个 thread/core 作为 运行 的 Javascript 解释器。
但是 node.js 确实并且可以在各种库函数或附加函数中使用多个 thread/core,例如用 C++ 实现的文件 I/O。事实上,node.js 用于文件 I/O 的 libuv 库使用线程轮询作为其异步、非阻塞文件 I/O 实现的一部分。这不影响Javascript解释器的"single threadedness",但确实有助于实现异步文件等外部功能I/O.
因此,如果您的附加组件在其 C++ 中使用了多个线程,那也没关系。它将必须与运行 Javascript 解释器的一个主线程通信。
But, what happens if I build a NodeJS C/C++ Addon which has
multithreading implemented?
如果需要,您的 C++ 插件可以在其实现中自由使用多线程。如果它有多个线程 运行,它必须以线程安全的方式与主线程 Javascript 通信。
我知道 fact NodeJS 在单核中运行。但是,如果我构建一个实现了多线程的 NodeJS C/C++ 插件会怎样?这个插件会消耗一个以上的核心(当它被认为是)?
nodejs本身并不局限于单线程,而是js代码的执行。如果需要,Nodejs 和您在 c/c++ 中编写的所有插件都可以在内部生成线程。
node.js 只使用一个 thread/core 作为 运行 的 Javascript 解释器。
但是 node.js 确实并且可以在各种库函数或附加函数中使用多个 thread/core,例如用 C++ 实现的文件 I/O。事实上,node.js 用于文件 I/O 的 libuv 库使用线程轮询作为其异步、非阻塞文件 I/O 实现的一部分。这不影响Javascript解释器的"single threadedness",但确实有助于实现异步文件等外部功能I/O.
因此,如果您的附加组件在其 C++ 中使用了多个线程,那也没关系。它将必须与运行 Javascript 解释器的一个主线程通信。
But, what happens if I build a NodeJS C/C++ Addon which has multithreading implemented?
如果需要,您的 C++ 插件可以在其实现中自由使用多线程。如果它有多个线程 运行,它必须以线程安全的方式与主线程 Javascript 通信。