【问题标题】:Child/Secondary thread in node.jsnode.js 中的子/辅助线程
【发布时间】:2013-07-22 15:01:50
【问题描述】:

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

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

有什么建议可以实现吗?我阅读了有关子进程、webworkers、dnode 和进程 nexttick 的信息,但我不确定实现它的最佳方法是什么。我试过 nexttick,但我的经验是它仍然是主线程的一部分,虽然是异步的。

【问题讨论】:

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


    【解决方案1】:

    如果您的目标只是启动进程而不考虑输出,您应该使用spawndetached:true

    对于传递数据,您可以使用标准输入(参见示例)或传递命令行参数或写入文件并重定向。

    【讨论】:

    • 谢谢@Nirk,如果我必须每天处理数百万个这样的请求,产卵会起作用吗?
    • 好的,所以我的是一个实时广告竞价平台,我每天必须对数百万个请求进行竞价。我必须分析请求并在 100 毫秒内做出响应。我能够完美地使用节点。但是有几个不太重要的函数应该不会影响主响应时间,所以我尝试在发送出价响应后分别处理它们。
    【解决方案2】:

    我已经实现了子进程分叉,用于将辅助/后台处理的数据传递给子进程(不断开子进程的连接)。到目前为止,这似乎很好地完成了我的工作。如果我遇到任何问题或找到更好的解决方案,我会更新。

    //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
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      相关资源
      最近更新 更多