一尘不染

掌握Node JS替代多线程

node.js

如果我正确理解Node JS不会阻塞…,那么它就不必等待数据库或其他进程的响应,而是继续进行其他操作并稍后再检查。

它也是单线程的。

因此,这是否意味着给定的Node JS进程可以完全有效地利用单个CPU内核,但不会使用计算机上的任何其他内核,因为它永远不会一次使用多个内核。

当然,这意味着其他进程仍可以将其他CPU用于其他事物,例如SQL数据库或其他故意分离的CPU重子例程,只要它们是独立的进程即可。

同样,如果Node JS进程具有无限循环或长时间运行的功能,则在停止无限循环或长时间运行的功能(或终止整个进程)之前,该进程将不再有用。

这一切对吗?我的理解正确吗?


阅读 227

收藏
2020-07-07

共1个答案

一尘不染

是的,非常正确。node.js服务器具有一个内部线程池,因此它可以执行阻止操作,并在事情完成时通过回调或事件通知主线程。

因此,我想它会在线程池中有限地使用另一个内核,例如,如果您执行非阻塞文件系统读取,则很可能是通过告诉线程池中的线程执行读取并设置回调来实现的完成后,这意味着在主node.js程序执行其他操作时,读取可能在其他线程/内核上进行。

但是从node.js的角度来看,它完全是单线程的,不会直接使用多个内核。

2020-07-07