代码之家  ›  专栏  ›  技术社区  ›  Geo

当Perl线程完成它的工作时,有什么方法可以做什么吗?

  •  5
  • Geo  · 技术社区  · 15 年前

    假设我有10个线程同时运行。当线程完成时,是否有方法调用某个方法?我在想这样的事情:

    $thread->onFinish(sub { print "I'm done"; });
    
    2 回复  |  直到 15 年前
        1
  •  5
  •   Sinan Ünür    15 年前

    你在标题里问的问题和你在身体里问的问题是不同的。

    另一个线程判断线程是否仍在运行的标准方法是等待它或使用 is_running 和/或 is_joinable 取决于你的特殊需要。

    如果你想要的只是 i'm done 要打印,请确保这是线程体中执行的最后一条语句,它将被打印出来。

    threads->create(sub {
        # call the actual routine that does the work
        print "i'm finished\n";
    });
    
        2
  •  1
  •   Tamás Szelei    15 年前

    我真的很困惑,所以这只是一个一般性的建议:你可以实现一个回调机制。如果没有其他内容,则可以在线程启动时使用onfinish方法传递对象。并在线程完成工作时从线程调用该函数(根据其内部状态)。