在上面的代码中,创建了一个长度为 max
最大并发数长度的数组,数组里放了对应数量的异步任务。然后使用 Promise.all
同时执行这些异步任务,当单个异步任务执行完成时,会在任务池取出一个新的异步任务继续执行,完成了效率最大化。
接下来,我们用下面这段代码进行执行测试(代码实现如下)
1 2 3 4 5 6 7 |
|
最终执行结果如下图所示:
到这里,我们的并发请求就完成啦!接下来我们分别来测试一下不同并发的速度吧~ 首先是 1 个并发,也就是没有并发(如下图)
耗时 11.462 秒!当不使用并发时,任务耗时非常长,接下来我们看看在其他并发数的情况下耗时(如下图)
从上图可以看出,随着我们并发数的提高,任务执行速度越来越快!这就是高并发的优势,可以在某些情况下提升数倍乃至数十倍的效率!
我们仔细看看上面的耗时会发现,随着并发数的增加,耗时还是会有一个阈值,不能完全呈倍数增加。这是因为 Node
实际上并没有为每一个任务开一个线程进行处理,而只是为异步 I/O
任务开启了新的线程。所以,Node
比较适合处理 I/O
密集型任务,并不适合 CPU
(计算)密集型任务。
到这里,我们的使用 Node “多线程”处理高并发任务就介绍完了。如果想要程序完善一点的话,还需要考虑到任务超时时间、容错机制,大家感兴趣的可以自己实现一下。
更多编程相关知识,请访问:编程入门!!
以上就是node.js“多线程”如何处理高并发任务?的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
javascript中const和object.freeze()的差异
更多相关阅读请进入《javascript》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者