我不了解的是,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在回调函数之前运行。
答案 0 :(得分:0)
Nodejs程序在设计上是单线程的。它优先考虑事件循环内部最重要的应用程序。有多种方法可以优化您的绩效。例如,在节点js中内置了一个集群模块,用于将相同的节点客户端分配给不同的工作程序。
节点10.5的https://nodejs.org/en/blog/release/v10.5.0/有多线程支持,但这是实验性的。