node.js中的子/辅助线程

时间:2013-07-22 15:01:51

标签: javascript multithreading node.js process parent-child

我有一个要求,我必须运行独立于主节点线程的进程。基本上,目的是从主节点线程数据启动辅助进程,而不是等待回调或任何结果,因为辅助进程不必将任何内容返回给主线程。

我希望在不阻塞主nodejs线程的情况下实现这一点,并且主线程不应该关心它将数据传递给辅助线程后会发生什么。基本上,就二级进程而言,主线程的进程在将数据发送到辅助线程后结束。

我有什么建议可以实现这个目标吗?我读到了关于子进程,webworkers,dnode和process nexttick的内容,但我不确定实现它的最佳方法是什么。我尝试了nexttick,但我的经验是它仍然是主线程的一部分,虽然是异步的。

2 个答案:

答案 0 :(得分:2)

如果您的目标只是在不考虑输出的情况下启动流程,则应将spawndetached:true一起使用。

对于传递数据,您可以使用stdin(请参阅示例)或传递命令行参数或写入文件和重定向进行编写。

答案 1 :(得分:0)

我已经实现了子进程fork,用于将辅助/后台处理的数据传递给子进程(不需要断开子进程)。这似乎是我现在的工作。如果我遇到任何问题或找到更好的解决方案,我会更新。

//Main Process
var cp = require('child_process').fork('child.js');
cp.send(data);


//Child Process (child.js)
process.on('message', function(data){
 //do something with data
});