我要做的是在我在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