my $running :shared = 0; sub thread{ {lock $running; ++$running; } .... lock $running; --$running; } ... sleep 1 while $running;