Показать сообщение отдельно

  #2  
Старый 26.10.2009, 14:36
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Ну если юзать расшаренный хэш, то
Код:
#!/usr/bin/perl                 
use threads;                    
use threads::shared;            
my $n : shared;                 
my %hash : shared = ();         
#my $refhash : shared = \%hash; 

$a = gets();
print $_, ' => ', $hash{$_}, "\n" for keys %hash;

sub gets {
  $thr = 10;
  $n = 0;
  %res = ();
  for(0..$thr) {
    $trl[$_] = threads->create(\&gets1);
  }
  for(0..$thr) {
    $trl[$_]->join;
  }
  sub gets1 {
    $| = 1;
    $ii = "";
    while ($n < 10) {
      { lock($n);
      $n++; }
      $ii .= $n;
      $hash{$n} = $ii;
    }
  }
}
 
Ответить с цитированием