假设我有10个线程同时运行。线程完成后有没有办法调用某些方法?我想的是:
$thread->onFinish(sub { print "I'm done"; });
答案 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方法传递一个对象。并在线程完成它的工作时调用该函数(根据它的内部状态)。