如果我理解正确的话,Node JS 是非阻塞的......所以它不会等待数据库或其他进程的响应,而是转移到其他东西并稍后检查。
而且它是单线程的。
那么这一切是否意味着给定的 Node JS 进程可以充分有效地利用单个 CPU 核心,但它不会使用机器上的任何其他核心,就像它一次不会使用多个核心一样。
这当然意味着其他 CPU 仍然可以被其他进程用于 SQL 数据库或其他有意分离的 CPU 密集子例程,只要它们是单独的进程即可。
此外,如果 Node JS 进程具有无限循环或长时间运行的函数,则在停止无限循环或长时间运行的函数(或杀死整个进程)之前,该进程不再有用。
这一切都对吗?我的理解正确吗?
非常正确,是的。 Node.js 服务器有一个内部线程池,因此它可以执行阻塞操作,并在事情完成时通过回调或事件通知主线程。
因此,我想它将有限地使用线程池的另一个核心,例如,如果您执行非阻塞文件系统读取,这可能是通过告诉线程池中的线程执行读取并在以下情况下设置回调来实现的:它已完成,这意味着读取可能发生在不同的线程/核心上,而主 Node.js 程序正在执行其他操作。
但从node.js的角度来看,它完全是单线程的,不会直接使用多个核心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)