33 lines
586 B
Perl
33 lines
586 B
Perl
use threads;
|
|
use Thread::Queue qw();
|
|
|
|
my $q1 = Thread::Queue->new;
|
|
my $q2 = Thread::Queue->new;
|
|
|
|
my $reader = threads->create(sub {
|
|
my $q1 = shift;
|
|
my $q2 = shift;
|
|
|
|
open my $fh, '<', 'input.txt';
|
|
$q1->enqueue($_) while <$fh>;
|
|
close $fh;
|
|
$q1->enqueue(undef);
|
|
|
|
print $q2->dequeue;
|
|
}, $q1, $q2);
|
|
|
|
my $printer = threads->create(sub {
|
|
my $q1 = shift;
|
|
my $q2 = shift;
|
|
|
|
my $count;
|
|
while (my $line = $q1->dequeue) {
|
|
print $line;
|
|
$count++;
|
|
};
|
|
|
|
$q2->enqueue($count);
|
|
}, $q1, $q2);
|
|
|
|
$reader->join;
|
|
$printer->join;
|