Perl 螺纹的轻量叉更换
我想在下面使用类似于异步线程的fasync。我是不是忘了什么,这里有没有不涉及的角落案例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
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,如果您想要在子级和父级之间或不同子级之间进行通信,则需要详细说明