perlスレッド間共有変数
use strict;
use warnings;
use threads;
use threads::shared;
use Time::HiRes;
use utf8;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
print("thread test\n");
my $counter :shared = 0;
my @t_array = ();
foreach(1..5){
my $t = threads->create(\&sub_func, $_);
push(@t_array, $t);
}
foreach (@t_array){
$_->join();
}
print "done.\n";
sub sub_func {
my($val) = @_;
print("thread $val: -------------------------------------- start\n");
my $r = rand(3) + 1;
for(my $i = 0; $i < $r; $i++){
$counter++;
print("thread $val exe:$i:$counter\n");
threads->yield();
Time::HiRes::sleep(0.001);
}
print("thread $val: ----------------------------------------end\n");
}