use v5.030; use threads; use threads::shared; use PDL; BEGIN { $PDL::no_clone_skip_warning = 1; } my $lock : shared = 0; for my $tid (1..64) { threads->create(sub { my $output = ""; for (1..500000) { # my $r = CORE::rand(); my $r = PDL->random; $output .= "$r\n"; } lock $lock; print $output; }); } $_->join for threads->list; #### $ perl test6.pl | LC_ALL=C sort -u | wc -l 32000000 $ perl test6.pl | LC_ALL=C sort -u | wc -l 32000000 $ perl test6.pl | LC_ALL=C sort -u | wc -l 32000000 #### $ perl test6.pl | LC_ALL=C sort -u | wc -l 25105304 $ perl test6.pl | LC_ALL=C sort -u | wc -l 25304231 $ perl test6.pl | LC_ALL=C sort -u | wc -l 25290392 #### perl test6.pl | LC_ALL=C mcesort -j6 -u | wc -l