Использование threads
.
use strict;
use warnings;
use threads;
sub first {
my $counter = shift;
print "I'm running\n" while $counter--;
return;
}
sub second {
my $counter = shift;
print "And I'm running too!\n" while $counter--;
return;
}
my $firstThread = threads->create(\&first,15); # Prints "I'm running" 15 times
my $secondThread = threads->create(\&second,15); # Prints "And I'm running too!"
# ... 15 times also
$_->join() foreach ( $firstThread, $secondThread ); # Cleans up thread upon exit
На что следует обратить внимание, так это на то, как печать чередуется нерегулярно. Не пытайтесь основывать какие-либо расчеты на ложной предпосылке, что порядок выполнения корректен.
Потоки Perl могут взаимодействовать, используя:
- общие переменные (
use threads::shared;
)
- очередей (
use Thread::Queue;
)
- семафоры (
use Thread::Semaphore;
)
См. perlthrtut для получения дополнительной информации и отличного учебника.