nodejs中的libuv线程如何利用多核cpu

时间:2015-09-20 12:00:25

标签: javascript node.js libuv

我无法确定node.js中的libuv是使用多核cpus还是仅使用时间切片在单核上运行其所有线程? 由于node.js是单线程的,但libuv有自己的线程池,所以它是否使用多核cpu的所有内核?

2 个答案:

答案 0 :(得分:3)

它确实通过线程池利用多核。例如,在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);
}

答案 1 :(得分:-1)

Node.js服务器可以通过Cluster模块使用所有核心。否则它不会,除非您将应用程序构建为多个进程,这是一种常见的模式。