3

如果你在 Node.js 中运行一个 I/O 密集型任务,比如一些异步数据库操作,使用node-fibers,它会阻塞吗?

我还没有使用节点光纤 b/c 似乎——如果在处理 HTTP 请求的代码中使用,其中运行了一些长的正常非阻塞 I/O 代码——它现在会阻止其他请求访问您的应用程序。这是真的还是假的?关于为什么它是真/假的一些细节也会非常有帮助。

4

1 回答 1

1

Fibers 允许程序员编写“类似线程”的​​阻塞语句 JavaScript 代码。但它的实现不是阻塞的,代码相当于node.js的异步事件代码。Laverdets 实现会在某些时候暂停光纤执行,就像异步 node.js 模型一样,并且可以在以后恢复。

Fiber 更像是语法糖,它们不会改变 node.js 的异步模型。唯一的区别是纤维正在创建不同的执行堆栈(如果我是正确的),这对普通的 nodejs 异步代码来说是一个轻微的开销。

于 2012-07-28T11:43:22.173 回答