【发布时间】:2015-07-06 20:02:26
【问题描述】:
我正在学习 Node.js,我读到 Node.js 是单线程和非阻塞的。
我在 JavaScript 方面有很好的背景,我确实了解回调,但我并不真正了解 Node.js 如何成为单线程并在后台运行代码。这不矛盾吗?
因为如果 Node.js 是单线程的,它仍然只能同时执行一项任务。因此,如果它在后台运行某些东西,它必须停止当前任务以在后台处理某些东西,对吧?
实际效果如何?
【问题讨论】:
-
虽然这个异步后台活动的描述是为浏览器编写的,但它也适用于 node.js(相同的概念):stackoverflow.com/questions/7575589/…。总结是后台任务不在一个node.js线程中运行。它们要么在本机线程中运行,要么自己使用非阻塞 IO,并通过事件队列与一个 node.js 线程通信。
标签: javascript node.js nonblocking