Я относительно новичок в Perl, и я написал программу для обработки тех же операций на множестве образов ОС. Поскольку операции были одинаковыми, я использовал потоки. Уменьшенная версия программы прилагается. Проблема в том, что основная программа никогда не выходит и ждет вечно. По трассировке вижу, что основная программа ждет по команде "тройник". Что-нибудь, что я тут натворил?
Я нахожусь на CentOS 6.7 с Perl версии 5.1, и я не могу двигаться вперед из-за многих других зависимостей: (* 1003 *
#!/usr/bin/perl -w
use threads;
my $tee_pid= open my $tee, "|-", "tee mylog";
my @images = ( "image1" , "image2");
foreach my $image (@images){
$_ = async { do_ops_on_image() };
sleep ( 60 );
}
while( threads->list ) {
for my $joinable ( threads->list( threads::joinable ) ) {
$joinable->join;
}
}
print "All thread completed \n";
close $tee;
sub do_ops_on_image
{
my $time = `date`;
my $id = threads->tid();
sleep (120) if ( $id ==2 );
print $tee "my $id started at $time \n";
}