4

我必须多次进行某个计算。我想将它拆分为多个核心,所以我想使用 child_process.fork(),然后将工作的一部分传递给每个孩子。

这工作正常,除了我的主要进程(执行 fork() 的那个)在 fork()ing 之后继续运行,并且在孩子们完成工作时已经终止。

我真正想做的是等待孩子们完成后再继续执行。

我在 Node.js 中找不到任何好的方法来做到这一点。有什么建议吗?

4

1 回答 1

4

如果您通过 生成一个新的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用于计算大量数据)。

于 2012-10-17T20:20:55.180 回答