use threads; use threads::shared; my $count = 100_000; my $num_calls = 4; my $sum : shared = 0; sub inc { for (1..$count) { lock($sum); ++$sum } } $_->join for map { threads->create( \&inc ) } 1..$num_calls; print("$sum\n"); # 400000