如果我理解正确的话,Node是非blocking...so的,而不是等待数据库或其他进程的响应,它会转移到其他地方,稍后再进行检查。
它也是单线程的。
因此,所有这些都意味着给定的Node JS进程可以充分有效地利用单个CPU核心,但它不会使用机器上的任何其他核心,例如,它永远不会一次使用多个核心。
当然,这意味着其他CPU仍然可以被其他进程用于SQL数据库或其他故意分离的CPU繁重的子例程,只要它们是单独的进程。
另外,如果Node JS进程有一个死循环或长时间运行的函数,那么在停止死循环或长时间运行的函数(或整个进程被终止)之前,该进程在任何情况下都不再有用。
这一切都对吗?我的理解是正确的吗?
发布于 2011-03-05 20:23:39
非常正确,是的。node.js服务器有一个内部线程池,所以它可以执行阻塞操作,并在事情完成时通过回调或事件通知主线程。
因此,我认为它将有限地使用线程池的另一个内核,例如,如果您执行非阻塞文件系统读取,这可能是通过告诉线程池中的线程执行读取并在完成时设置回调来实现的,这意味着读取可能发生在不同的线程/核心上,而主node.js程序正在执行其他操作。
但从node.js的角度来看,它完全是单线程的,不会直接使用多个内核。
发布于 2013-12-24 05:10:45
因为这个问题是在两年前提出的。事情变得不同了,或者在Node.JS上有了解决多线程问题的替代方法
根据下面的博客文章,使用传入的“任务”扩展,一些可以直接从其他可用内核中受益。
http://oguzbastemur.blogspot.com/2013/12/multithread-nodejs.html
https://stackoverflow.com/questions/5200821
复制相似问题