孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

注意在perl5.8中,必须用threads->create来生成线程,和许多介绍旧版perl的书籍中的有区别

use Thread qw/async yield/;
my $done=0;
sub frob {
 my $arg=shift;
 my $tid=Thread->self->tid;
 print "thread $tid:frob $arg\n";
 yield;
 unless ($done) {
  yield;
  $done++;
  frob($arg+10);
 }
}

my @t;
for my $i (1..3) {
 push @t,threads->create(\&frob,$i);
}
for (@t) {$_->join}
print "done is $done\n";

posted on 2011-04-27 23:01  孤独的猫  阅读(297)  评论(0编辑  收藏  举报