how libuv threads in nodejs utilize multi core cpu

梦想的初衷 提交于 2019-12-10 13:54:40

问题


I am not able to find out whether libuv in node.js uses multi core cpus or it runs all of its threads in on single core only using time slicing? As node.js is single threaded but libuv has its own thread pool so does it use all the cores of multi core cpu?


回答1:


It does leverage multicores via the threadpool. e.g., on Linux, the underlying pthreads will uses multiple cores for multiple threads.

If you run the following code, you will notice 4 (default threadpool size) cores will peg at 100% as file system IO are running with the threadpool.

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);
}



回答2:


A Node.js server can use all cores through the Cluster module. Otherwise it will not, unless you build your application as multiple processes which is a common pattern.



来源:https://stackoverflow.com/questions/32679142/how-libuv-threads-in-nodejs-utilize-multi-core-cpu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!