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!

戻る

inserted by FC2 system