gpt4 book ai didi

multithreading - perl 线程 : is_joinable vs is_running

转载 作者:行者123 更新时间:2023-12-04 06:38:02 25 4
gpt4 key购买 nike

while ($thr->is_running() {
# do something
}

对比

while (! $thr->joinable()) {
# do something
}

这两者有什么区别吗?
程序员什么时候会使用一个而不是另一个,反之亦然?

我假设你不能加入一个线程,如果它正在运行,那么它们基本上是一样的吗?

如果是这样,为什么 perl 提供两种不同的方法来检查线程的状态?

最佳答案

is_joinable!is_running 不同。

  • is_joinable 检查

     (thread->state & PERL_ITHR_FINISHED) &&
    !(thread->state & PERL_ITHR_DETACHED) &&
    !(thread->state & PERL_ITHR_JOINED)
  • is_running 检查

    !(thread->state & PERL_ITHR_FINISHED)

所以

  • 已完成的分离线程既未运行也无法连接。
  • 已加入的线程既未运行也不可加入。

关于multithreading - perl 线程 : is_joinable vs is_running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30364061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com