use strict; use threads; use threads::shared; my $i :shared; $i = 1; # Time and code passes. for my $id (@article_id) { lock($i); print "$i\n"; $i++; } # More code. #### use strict; use threads; use threads::shared; { my $i :shared; sub get_i { lock($i); return ++$i; } } # Time and code passes. for my $id (@article_id) { my $i = get_i(); print "$i\n"; # Do lengthy processing. } # More code.