PERLでスレッド
戻る
::::::::::::::
thread-test.pl
::::::::::::::
#!/usr/bin/perl -w
# $Id: perl-threads.html,v 1.1 2009/06/22 16:12:19 kishi Exp kishi $
use strict;
use threads;
my $thread1 = threads->new(\&function, "John");
my $thread2 = threads->new(\&function, "Paul");
my $thread3 = threads->new(\&function, "George");
my $thread4 = threads->new(\&function, "Ringo");
$thread1->join;
$thread2->join;
$thread3->join;
$thread4->join;
print "completed!\n";
sub function {
my ($name) = @_;
for (1..10) {
if( $name eq "Paul" ){
print "\t";
sleep(2);
} elsif( $name eq "George" ) {
print "\t\t";
sleep(3);
} elsif( $name eq "Ringo" ) {
print "\t\t\t";
sleep(1);
} else {
sleep(2);
}
print "I am $name ($_)\n";
threads->yield();
}
}
■実行結果
$ ./thread-test.pl
I am Ringo (1)
I am Paul (1)
I am John (1)
I am Ringo (2)
I am George (1)
I am Ringo (3)
I am Paul (2)
I am John (2)
I am Ringo (4)
I am Ringo (5)
I am George (2)
I am Paul (3)
I am John (3)
I am Ringo (6)
I am Ringo (7)
I am Paul (4)
I am John (4)
I am Ringo (8)
I am George (3)
I am Ringo (9)
I am Paul (5)
I am John (5)
I am Ringo (10)
I am George (4)
I am Paul (6)
I am John (6)
I am Paul (7)
I am John (7)
I am George (5)
I am Paul (8)
I am John (8)
I am George (6)
I am Paul (9)
I am John (9)
I am Paul (10)
I am John (10)
I am George (7)
I am George (8)
I am George (9)
I am George (10)
completed!
戻る