ユーザーのご要望によっては、重い計算が必要です(約100msの時間がかかります)。もちろん、ノードのメインイベントループでこれを実行したくないため、他のリクエストが処理されないようにします。Node.jsのメインイベントループからの負荷の重い計算
最も明白ですが、この問題を解決する最もクリーンな方法は、計算を別のプログラムにオフロードし、結果を非同期的に待つことです。
ノードプロセスを離れずにプロセス間通信を実装する方法はありますか。例えば。このような何か:
var compute = function (input) {
var i,
result = input;
for (i = 0; i < 1000000; i++) {
result = md5(result);
}
}
var controller = function (req, res) {
offload(compute, req.params.input, function(result) {
res.send(result);
});
}
http://github.com/xk/node-threads-a-gogoは、スレッドアゴゴが* nix上でのみ利用可能であることを除いて、私が探しているようですWindowsで同じことをする方法)。 – penartur
http://nodejs.org/api/child_process.htmlを使用しますか?私はまだすべての解決策がする必要があると思うIPCを行うと信じている – Alfred
はい、私は 'child_process'を知っています - 基本的にそれは外部プロセスをインスタンス化するための唯一の方法なので、あなたのメッセージの中で "まだ"です。私はIPCを実装せずに別のプログラムを書くこともしたいと思います(特に、計算結果が部分的にキャッシュされる可能性があることを考慮して)。基本的には、IPCを正しく実行する唯一の方法は、多数のワーカー(コア数以上)を使用して別のノードクラスタを実行し、IPC-over-httpを実行することです。 – penartur