Skip to content

Commit

Permalink
[perl #48214] documentation enhancement to perlthrtut
Browse files Browse the repository at this point in the history
From: johnh@isi.edu (via RT) <perlbug-followup@perl.org>
Message-ID: <rt-3.6.HEAD-28750-1196876739-1770.48214-75-0@perl.org>

p4raw-id: //depot/perl@32612
  • Loading branch information
jheidemann authored and rgs committed Dec 12, 2007
1 parent e67ed69 commit 2faf59d
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions pod/perlthrtut.pod
Expand Up @@ -323,6 +323,36 @@ detach itself:
# Do more work
}

=head2 Process and Thread Termination

With threads one must be careful to make sure they all have a chance to
run to completion, assuming that is what you want.

An action that terminates a process will terminate I<all> running
threads. die() and exit() have this property,
and perl does an exit when the main thread exits,
perhaps implicitly by falling off the end of your code,
even if that's not what you want.

As an example of this case, this code prints the message
"Perl exited with active threads: 2 running and unjoined":

use threads;
my $thr1 = threads->new(\&thrsub, "test1");
my $thr2 = threads->new(\&thrsub, "test2");
sub thrsub {
my ($message) = @_;
sleep 1;
print "thread $message\n";
}

But when the following lines are added at the end:

$thr1->join;
$thr2->join;

it prints two lines of output, a perhaps more useful outcome.

=head1 Threads And Data

Now that we've covered the basics of threads, it's time for our next
Expand Down

0 comments on commit 2faf59d

Please sign in to comment.