轻量叉更换螺纹

时间:2013-06-17 19:23:47

标签: perl

我想使用下面与fasync类似的threads async。我忘记了什么,是否有一些不在这里的角落案件?

sub fasync(&) {
  my ($worker) = @_;

  my $pid = fork() // die "can't fork!";

  if (!$pid) {
    $worker->();
    exit(0);
  }

  return sub {
    my ($flags) = @_;
    return waitpid($pid, $flags // 0);
  }
}

my @join = map {
  my $job = $_;
  fasync {

    print "$job\n";
  };
} 1 .. 10;

$_->() for @join;

1 个答案:

答案 0 :(得分:4)

看起来它应该可以正常工作,尽管应该对fork进行错误检查(失败时返回undef),如果你想要任何方式进行通信,则需要详细说明孩子和父母,或不同孩子之间。