Nodejs C / C ++会使用多个Core?

我知道NodeJS运行在一个单一的核心。 但是,如果我构build了一个实现了multithreading的NodeJS C / C ++插件,会发生什么? 这个插件会消耗超过一个核心(当它假设)?

node.js只使用一个线程/内核来运行Javascript解释器。

但是node.js可以在不同的库函数中使用多个线程/内核,或者可以在C ++中实现的附加函数(例如文件I / O)。 实际上,node.js用于文件I / O的libuv库使用线程轮询作为其实现asynchronous,非阻塞文件I / O的一部分。 这不会影响Javascript解释器的“单线程”,但却有助于执行外部函数,如asynchronous文件I / O。

所以,如果你的加载项在C ++中使用多个线程,那就没问题了。 它将不得不沟通回到运行Javascript解释器的一个主线程。

但是,如果我构build了一个实现了multithreading的NodeJS C / C ++插件,会发生什么?

如果需要,您的C ++插件可以在其实现中使用多个线程。 如果它有多个线程在运行,它将不得不以线程安全的方式与主要的Javascript线程通信。

nodejs本身并不局限于单线程,而是执行js代码。 NodeJs和你在c / c ++中使用的所有插件可以在内部产生线程(如果需要的话)。