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.