ある計算を何度もしなければなりません。複数のコアに分割したいので、child_process.fork() を使用して、各子に作業のチャンクを渡します。
これは正常に動作しますが、私のメイン プロセス (fork() を実行するプロセス) は fork() の後も続行され、子プロセスが作業を完了するまでに既に終了しています。
私が本当にやりたいことは、実行を続行する前に、子供たちが終了するのを待つことです。
ノードでこれを行う良い方法が見つかりません。何かアドバイス?
ある計算を何度もしなければなりません。複数のコアに分割したいので、child_process.fork() を使用して、各子に作業のチャンクを渡します。
これは正常に動作しますが、私のメイン プロセス (fork() を実行するプロセス) は fork() の後も続行され、子プロセスが作業を完了するまでに既に終了しています。
私が本当にやりたいことは、実行を続行する前に、子供たちが終了するのを待つことです。
ノードでこれを行う良い方法が見つかりません。何かアドバイス?
を介して新しいV8プロセスを生成すると、通信層を実装する.fork()
新しいオブジェクトが返されます。child
例えば
var cp = require( 'child_process' ),
proc = cp.fork( '/myfile.js' );
proc.on('message', function( msg ) {
// continue whatever you want here
});
作業が完了し/myfile.js
たら、イベントをディスパッチするだけです
process.send({ custom: 'message' });
このメソッドは実際に新しい V8 インスタンスを生成し、大量のメモリを消費することに注意してください。そのため、非常に慎重に使用する必要があります。おそらく、そのようにする必要さえないかもしれませんが、より「ノードのような」ソリューションがあるかもしれません(process.nextTick
重いデータを計算するために使用します)。