|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Renat Araslanow 2:5011/119.1 27 May 2004 16:40:45 To : All Subject : perl 5.8.3 (AS b809) --------------------------------------------------------------------------------
программа из perldoc perlthrtut не завершается нормально - доходит до 659 и
говорит "A thread exited while 2 threads were running."
почему?
ЗЫ% решил вот на 5.8.3 переходить */_=)_/*
#!/usr/bin/perl
# prime-pthread, courtesy of Tom Christiansen
use strict;
use threads;
use Thread::Queue;
my $stream = new Thread::Queue;
my $kid = new threads(\&check_num, $stream, 2);
for my $i ( 3 .. 1000 ) {
$stream->enqueue($i);
}
$stream->enqueue(undef);
$kid->join;
sub check_num {
my ($upstream, $cur_prime) = @_;
my $kid;
my $downstream = new Thread::Queue;
while (my $num = $upstream->dequeue) {
next unless $num % $cur_prime;
if ($kid) {
$downstream->enqueue($num);
} else {
print "Found prime $num\n";
$kid = new threads(\&check_num, $downstream, $num);
}
}
print "End while";
if($kid)
{
print "If kid";
$downstream->enqueue(undef);
$kid->join ;
}
#$downstream->enqueue(undef) if $kid;
#$kid->join if $kid;
}
__END__
--- [Преждевременная оптимизация -- корень всех зол Д. Кнут]
* Origin: Чайник с программным управлениемЪ (2:5011/119.1)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/327840b5c664.html, оценка из 5, голосов 10
|