Perl 中的安全防火和忘记方法

Safe fire and forget method in Perl

我需要在我的 Perl 代码中异步执行一个方法(不是进程),但我必须确保这段代码永远不会引发任何异常并停止我的主要任务执行。

异步调用方法并消除任何潜在异常的最佳方法是什么,无论它是被调用方法的内部异常还是线程异常?

在 Java 中我们会有这样的东西:

// my task runs here
try {
    // assyncrounous method invocation (fire and forget)
    new MyThread().start();
} catch (Throwable e) {
    // Silent any error
}
// my task continues here

如果您想异步执行任意代码,您有两种选择:您可以 运行 在单独的进程中执行,或者 运行 在单独的线程中执行。使用单独的进程会更加健壮,但您可以使用线程。

use threads;
my $thread = async { code() };

join 等待它完成的线程。