use 5.008; use strict; use threads qw(yield); use threads::shared (); use Thread::Queue; use Time::HiRes qw(sleep); $|++; my $Q = new Thread::Queue; $Q->enqueue( 1 .. 1000 ); my $sub1 = sub { my $a; while (1) { $Q->dequeue; yield; } }; my $t1 = new threads $sub1; my $t2 = new threads $sub1; my $t3 = new threads $sub1; $t1->detach; $t2->detach; $t3->detach; while(1) { # readFile(); # ... $Q->enqueue(1..1000) unless $Q->pending; print $Q->pending; yield; }