当Perl线程完成其工作时,有什么方法可以做某事吗?

时间:2010-03-06 14:50:19

标签: perl multithreading

假设我有10个线程同时运行。线程完成后有没有办法调用某些方法?我想的是:

$thread->onFinish(sub { print "I'm done"; });

2 个答案:

答案 0 :(得分:5)

你在标题中提出的问题和你在体内提出的问题是不同的。

另一个线程找出线程是否仍在运行的标准方法是等待它或使用is_running和/或is_joinable进行轮询,具体取决于您的特定需求。

如果您想要打印i'm done,那么请确保这是在线体中执行的最后一个语句,并且它将被打印。

threads->create(sub {
    # call the actual routine that does the work
    print "i'm finished\n";
});

答案 1 :(得分:1)

我在这里真的很黑,所以这只是一个普遍的建议:你可以实现一个回调机制。如果没有别的,你可以在线程启动时使用onFinish方法传递一个对象。并在线程完成它的工作时调用该函数(根据它的内部状态)。