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

Geo*_*Geo 5 perl multithreading

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

$thread->onFinish(sub { print "I'm done"; });
Run Code Online (Sandbox Code Playgroud)

Sin*_*nür 5

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

不同线程找出线程是否仍在运行的标准方法是等待它或使用is_running和/或is_joinable根据您的特定需要轮询它.

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

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