当线程释放其资源时

时间:2014-02-15 18:19:19

标签: c linux multithreading process pthreads

pthread_detach的手册页中,我读到当任何线程被分离时,那么在线程终止时它会将其资源释放回系统。

什么是线程资源?它是该线程使用的内存的一部分,如果是,那么该内存是进程地址空间的一部分。我试图理解这一点,但我得到了它。

那么可连接线程呢,什么时候线程释放它的资源?在pthread_join时或在终止或处理时?

pthread_cancel命令中释放资源时。

1 个答案:

答案 0 :(得分:3)

每个线程都会占用操作系统中的一些簿记资源,以及用户空间内存中自己的执行堆栈。线程被销毁时会释放这些资源,这可能在几种情况下发生,例如:

  • pthread_join在可连接线程上调用时返回
  • 分离线程的入口函数返回,
  • main正常返回或exit被调用
  • 由于收到未处理的信号,该过程终止,
  • 成功调用
  • exec

但是,可以退出正在运行main的线程并使其他已分离的线程继续运行。为此,您必须在主线程中调用pthread_exit