use Coro qw( async ); use Coro::Channel qw( ); use LWP::Protocol::AnyEvent::http qw( ); use LWP::UserAgent qw( ); my $num_workers = 10; my $q = Coro::Channel->new(); my @threads; for (1..$num_workers) { push @threads, async { my $ua = LWP::UserAgent->new(); $ua->protocols_allowed([qw( http https )]); while (my $url = $q->get()) { my $response = $ua->get($url); ... } } } while (my $url = get_next_url()) { $q->put($url); } $q->shutdown(); $_->join() for @threads;