#!/usr/bin/perl use strict; use threads; use Thread::Semaphore; my $semaphore = new Thread::Semaphore; $semaphore->down; sub code { my $job = $_[0]; $semaphore->down; print "$job\n"; } foreach (1..10) { threads->new(\&code, $_); } sleep 5; $semaphore->up(10);