#! perl -slw use threads stack_size => 4096; use threads::shared; $|++; sub usleep{ select'','','',$_[0] } my $count :shared = 0; sub doit{ do{ lock $count; printf "\r[%u] %u\t", threads->tid, ++$count; usleep 0.01 } for 1 .. $_[0]; } my @t = map threads->create( \&doit, $ARGV[1] // 300 ), 1 .. $ARGV[ 0 ]; $_->join for @t; print $count;