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

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

它通过线程池来利用multithreading。 例如,在Linux上,底层pthreads将为多个线程使用多个核心。

如果运行以下代码,则会注意到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); } 

Node.js服务器可以通过Cluster模块使用所有内核。 否则它不会,除非你build立你的应用程序作为一个共同的模式多个进程。