|
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
|