Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 perl 5.8.3 (AS b809)   Renat Araslanow   27 May 2004 16:40:45 
Архивное /ru.perl/327840b5c664.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional