为什么NodeJ即使异步运行也无法处理大量的CPU任务?

时间:2019-06-05 15:32:35

标签: javascript node.js performance single-threaded

我不了解的是,nodejs是异步的,因此我运行多个任务并不重要,因为代码解析器会继续执行其他任务,并且当长任务完成时,我会知道回调函数,那么CPU密集型任务的阻塞在哪里?即使一个任务花费10秒,Js中的其他代码行也将继续执行并启动其他任务。因为NodeJ仅使用4个线程来执行繁重的任务,所以我知道所有这些线程都会很忙,所以这里介绍了为什么不对nodejs使用繁重的cpu任务,对吗?

var listener = readAsync("I/O heavy calculation", function(){
   console.log("I run after the I/O is done."); 
 })

//The parse will send the request and pass to the next line of code

console.log("I run before I/O request is done")

我希望全局声明的console.log在回调函数之前运行。

1 个答案:

答案 0 :(得分:0)

Nodejs程序在设计上是单线程的。它优先考虑事件循环内部最重要的应用程序。有多种方法可以优化您的绩效。例如,在节点js中内置了一个集群模块,用于将相同的节点客户端分配给不同的工作程序。

节点10.5的

https://nodejs.org/en/blog/release/v10.5.0/有多线程支持,但这是实验性的。