我在AnyEvent::Utils::fork_call中遇到问题。我正在使用fork_call,然后做一些工作,之后我应该结束我的fork_call,并开始新的并行任务。

我尝试过:

fork_call {

    # very important work

    # start new parallel task
    if (my $pid = fork) {
        # other important and very long work
    }
} sub {
    # never reached this, while parallel task working
}

我认为任何事件fork_call都在等待所有子进程完成工作。

那么如何避免这个问题呢?也许我应该摆脱父进程?

欢迎任何建议。
谢谢。

最佳答案

我不知道这是否满足您的需求,但是您可以在第一个回调中运行下一个fork_call。这样的事情似乎起作用:

fork_call {
    # Important work
} sub {
    fork_call {
        # other important work
    } sub {
        warn "done!";
    }
};

因为第二个fork_call在第一个回调中使用,所以这意味着它会在完成“重要工作”之后 fork 并开始。

关于linux - 通过perl,linux和任何事件在派生进程中启动并行任务的明智方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16652502/

10-13 05:51