pthread_exit是否会杀死一个线程..我的意思是释放分配给它的堆栈?

时间:2011-09-30 11:48:19

标签: pthreads

我想为写入一个线程创建很多线程,写完后我调用exit ...但是,当我调用exit时,我是否释放堆栈或者我仍然使用它?

2 个答案:

答案 0 :(得分:0)

为了避免资源泄漏,您必须执行以下两项之一:

  • 确保其他线程在线程上调用pthread_join()
  • 将线程创建为'detached',可以通过将正确的pthread属性设置为pthread_create,也可以通过调用pthread_detach()函数来完成。

如果不这样做,通常会导致整个堆栈在许多实现中“泄漏”。

答案 1 :(得分:0)

系统为每个线程(线程ID,线程retval,堆栈)分配底层存储,并且这将保留在进程空间中(并且不会被回收),直到线程终止并且已被其他线程连接。 / p>

如果你有一个线程,你不关心线程如何终止,并且分离线程是一个不错的选择。 对于分离的线程,系统会在线程终止后自动回收其底层资源。

来源文章:http://www.ibm.com/developerworks/library/l-memory-leaks/