use warnings; use strict; use threads; use threads::shared; #use Time::HiRes; #my $t0 = Time::HiRes::time; my @array : shared; for (1..50) { push @array, $_; } my $thr = threads->create(\&spawnThread); my $thr2 = threads->create(\&spawnThread); my $thr3 = threads->create(\&spawnThread); my $thr4 = threads->create(\&spawnThread); my $thr5 = threads->create(\&spawnThread); printf "Result = %d\n", $thr->join(); printf "Result = %d\n", $thr2->join(); printf "Result = %d\n", $thr3->join(); printf "Result = %d\n", $thr4->join(); printf "Result = %d\n", $thr5->join(); #my $t1 = Time::HiRes::time; #my $elapsed = $t1 - $t0; #print "\nElapsed Time: $elapsed\n"; sub spawnThread { for(1..10) { my $index = shift @array; print "$_ => $index\n"; } return int rand(100); } #### 1 => 1 1 => 2 1 => 3 1 => 4 1 => 5 . . . 1 => 41 2 => 42 3 => 43 4 => 44 5 => 45 6 => 46 7 => 47 8 => 48 9 => 49 10 => 50 Result = 89 Result = 51 Result = 71 Result = 15 Result = 7