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



我正在尝试创建一个递归函数,比如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);
});

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

做这件事需要开销。

这些子节点仍然是V8的全新实例。假设每个新节点的启动时间至少为30ms,内存至少为10mb。也就是说,你不可能创造出成千上万个。

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

如果你的Merge函数足够快,就没有理由拥有所有这些东西,那么直接计算就可以了

最新更新