gpt4 book ai didi

multithreading - 如果取消调用 `pthread_join ()`的线程,则目标线程将保持可连接状态

转载 作者:行者123 更新时间:2023-12-03 13:00:46 25 4
gpt4 key购买 nike

来自:http://linux.die.net/man/3/pthread_join

If the thread calling pthread_join() is canceled, then the target thread will remain joinable (i.e., it will not be detached).



这是否意味着如果我们取消调用 pthread_join的主线程,目标线程就不会中止?

最佳答案

pthread_join()首先不会“中止”目标线程,因此我不确定我是否完全理解该问题。

基本上,如果某个线程(主线程或其他线程)调用pthread_join(),则它要求阻塞,直到目标线程退出为止。在正常情况下,一旦目标线程退出,调用pthread_join()的线程将解除阻塞,并且与目标线程相关联的任何资源都可以由系统释放。

但是,如果某个线程调用了pthread_join()(并且在等待目标线程退出时被阻塞)并且被阻塞的线程被取消,则pthread_join()调用的目标基本上没有任何 react (它继续进行)。文档正在澄清的是该线程保持“可连接”状态-这意味着:

  • 另一个线程可以调用pthread_join()以等待它完成
  • 除非另一个线程加入目标线程或为目标线程调用pthread_detach(),否则在一个线程完成并加入一个线程后系统可以释放的资源将不会被释放。为线程调用pthread_detach()使其“无法连接”-它将继续运行,并且退出时其资源将被释放(分离调用向系统指示在线程退出后将没有任何资源使用这些资源),但是没有线程可以加入它了。
  • 关于multithreading - 如果取消调用 `pthread_join ()`的线程,则目标线程将保持可连接状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10714679/

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