Pra*_*dey 5 javascript node.js libuv
我无法确定node.js中的libuv是使用多核cpus还是仅使用时间切片在单核上运行其所有线程?由于node.js是单线程的,但libuv有自己的线程池,所以它是否使用多核cpu的所有内核?
小智 5
它确实通过线程池利用了多核。例如,在 Linux 上,底层 pthread 将为多个线程使用多个内核。
如果您运行以下代码,您会注意到 4 个(默认线程池大小)内核将与 100% 挂钩,因为文件系统 IO 正在与线程池一起运行。
var util = require('util');
var fs = require('fs');
for (var i = 0; i < 300000; i++) {
(function(id) {
fs.readdir('.', function() {
console.log(util.format('readdir %d finished.', id));
});
})(i);
}
Run Code Online (Sandbox Code Playgroud)
Jas*_*say -1
Node.js 服务器可以通过该Cluster
模块使用所有核心。否则它不会,除非您将应用程序构建为多个进程(这是常见的模式)。
归档时间: |
|
查看次数: |
724 次 |
最近记录: |