Is there any way to do something when a Perl thread finishes its work?
multithreading, perl
Solution
The question you ask in the title and the one you ask in the body are different.
The standard way for a different thread to find out if a thread is still running is to either wait for it or poll it using `is_running` and/or `is_joinable` depending on your particular needs.
If all you want is for the `i'm done` to be printed, well, make sure that is the last statement executed in the thread body, and it will be printed.
threads->create(sub {
# call the actual routine that does the work
print "i'm finished\n";
});
Problem
Let's say I have 10 threads running simultaneously. Is there any way of calling some method when a thread finishes? I was thinking of something like: ``` $thread->onFinish(sub { print "I'm done"; }); ```