节点光纤是否阻塞?

时间:2012-07-28 03:31:02

标签: javascript node.js asynchronous io node-fibers

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

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

1 个答案:

答案 0 :(得分:1)

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

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