【发布时间】:2011-07-09 05:16:35
【问题描述】:
如果我理解正确,Node JS 是非阻塞的......所以它不是等待来自数据库或其他进程的响应,而是转移到其他东西并稍后再检查。
它也是单线程的。
这是否意味着给定的 Node JS 进程可以充分有效地利用单个 CPU 内核,但不会使用机器上的任何其他内核,例如,它一次永远不会使用多个内核。
这当然意味着其他 CPU 仍然可以被其他进程用于 SQL 数据库或其他有意分离的 CPU 繁重的子例程,只要它们是一个单独的进程。
此外,如果 Node JS 进程具有无限循环或长时间运行的函数,则该进程在任何情况下都不再有用,直到无限循环或长时间运行的函数停止(或整个进程终止)。
这一切都好吗?我的理解正确吗?
【问题讨论】:
-
“节点”不是单线程。只有 JS/V8 引擎在单线程中运行。 NodeJS 的 libuv 部分是多线程的。见Is NodeJS really Single-Threaded?