节点>的事件循环和计算密集型任务问题 0.8



我要做的是在我在Nodeo中拥有的进化算法的顶部添加REST服务器。我正在遵循这些步骤,这些步骤基本上意味着

app.listen(port)
do_compute_intensive_task()

,然后

function do_compute_intensive_task() {
  do_lots_of_stuff();
  if (not_finished) {
     process.nextTick(do_compute_intensive_task());
  } else {
     console.log("We're done" );
  }
}

它已在这里检查(我知道,我不应该)。计算密集型零件运行良好,但是REST服务器无法回答,直到密集零件完成之前,它会使连接失速。我已经安装了最后一个节点v0.10.24,但它不起作用。这是uname -a

Linux penny 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

它可以正常工作,在另一台具有不同版本的节点和较慢的处理器的计算机中:版本为v0.8.18,处理器是i5和 uname -a返回

Linux amy 3.8.0-35-generic #50~precise1-Ubuntu SMP Wed Dec 4 17:25:51 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

问题现在是:我在做什么错?任何事物?某物?是一个错误吗?它与处理器速度有关吗?

Update 我已经安装了nave(您也应该)检查不同版本,并且它在0.9版本中停止工作。它与最后一个版本的0.8(0.8.26)一起使用,它不再适用于最新的0.9或最新的0.11.10

节点社区投票通过岛上使用process.nextTick()。为您的阅读享受:

https://github.com/joyent/node/issues/3335

实际上,在nodejs问题队列中已回答(并且很快)。process.nextTick优先考虑计算密集型事件。如果您希望他们等待IO,请使用setImmediate。修复在此提交Nodeo

相关内容

  • 没有找到相关文章

最新更新