Perl 螺纹的轻量叉更换

Perl 螺纹的轻量叉更换,perl,Perl,我想在下面使用类似于异步线程的fasync。我是不是忘了什么,这里有没有不涉及的角落案例 sub fasync(&) { my ($worker) = @_; my $pid = fork() // die "can't fork!"; if (!$pid) { $worker->(); exit(0); } return sub { my ($flags) = @_; return waitpid($pid, $flags

我想在下面使用类似于异步线程的fasync。我是不是忘了什么,这里有没有不涉及的角落案例

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;

这看起来应该可以很好地工作,尽管在fork上应该有一个错误检查,它在失败时返回undef,如果您想要在子级和父级之间或不同子级之间进行通信,则需要详细说明。

这看起来应该可以很好地工作,尽管fork上应该有一个错误检查,但它在失败时返回unde,如果您想要在子级和父级之间或不同子级之间进行通信,则需要详细说明