use strict; use warnings; use threads; use Thread::Queue qw( ); my $num_workers = 3; sub process_file { my ($file) = @_; ... } my $q = Thread::Queue->new(); for (1..$num_workers) { async { while (defined(my $file = $q->dequeue())) { process_file($file); } }; } for (;;) { ... wait for new files ... $q->enqueue(@new_files); } $q->enqueue() for 1..$num_workers; $_->join() for threads->list();
Adding use forks; should make the above use processes instead of threads.
In reply to Re: read directory, fork processes
by ikegami
in thread read directory, fork processes
by KevinBr
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |