で、これnode.js
に使用できますprocess.nextTick()
。イベントループの次のパスまで、長時間実行されるタスクの実行を延期します。
var foo = function()
{
var i = 1000000000;
while (i > 0)
{
i--;
}
};
console.log("start");
process.nextTick(foo());
console.log("end");
これにより、このリクエストをすぐに返すことができますが、最終的に実行されるときにスレッドをブロックすることに注意してください。Node.jsは、長時間実行されるCPUを集中的に使用するタスクを対象としていません。多くの軽量接続を処理するために、最適化されています。
ノードでCPUを集中的に使用する必要がある場合kue
は、2番目のnode.jsプロセスが新しいジョブをリッスンして実行できるキューにジョブを配置するジョブキュー(または他のpub / sub実装など)を確認する必要があります。彼らが入ってくると。
これにより、メインノードプロセスが新しいリクエストをすばやく処理できるようになり、いくつかのバックグラウンドノードプロセスがこれらの長時間実行されるジョブをすべて処理できるようになります。