每次我在Node.js中调用递归函数时如何生成新进程

时间:2015-02-28 19:11:27

标签: node.js mergesort spawn

我正在尝试创建一个递归函数,比如Merge Sort。我想在每次调用函数时创建一个新进程。

基本上我想在每次调用函数时将任务分成两部分,并将每个部分传递给一个新进程。

这是我的代码:

merge.js

process.stdin.resume();
process.stdin.setEncoding('utf8');

process.stdin.on('data', function (chunk) {
    var arr = chunk.trim().split(' ');

    mergeSort(arr,0,arr.length - 1); 
  // I want to create new threads like this
  // CreateNewLeftThread
  // CreateNewRightThread
  // Join(lefThread.rightThread)


    function mergeSort(arr,left,right) {

        if (left < right) {

            var mid = Math.floor(left + (right - left)/2);
            mergeSort(arr,left,mid);
            mergeSort(arr,mid+1,right);
            merge(arr,left,right,mid);

        }

    }

    function Merge(Parameters) {

        /*Code Here*/

    }

    process.exit(0);

});

1 个答案:

答案 0 :(得分:1)

你真的需要它吗? http://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options

这样做会产生开销。

  
    

这些子节点仍然是V8的全新实例。假设每个新节点至少启动30ms,内存为10mb。也就是说,你无法创建数千个。

  

我宁愿拥有一些消息队列或只是一个子进程池。 因此,每次需要创建新进程时,只需将带有参数的消息推送到其中一个池实例或队列中。

如果您的合并功能足够快,没有理由拥有所有这些东西,那么直接计算就可以了。