确切需要使用pthread_join()和pthread_exit()

时间:2014-06-20 12:15:03

标签: multithreading pthread-join

之前就此主题提出了一些问题,但我对pthread_join()的使用仍然不太清楚。

我读到某个地方,当一个线程存在而没有加入主线程时,资源没有被清除。我们在谈论什么资源?如果这些资源存在于调用线程的堆栈中,那么当调用线程存在时它们是否会被清除? 所以我认为pthread_join()有助于清理堆中存在的资源? 使用pthread_exit()的优点是什么?

1 个答案:

答案 0 :(得分:1)

线程函数返回时线程终止。如果你的线程函数调用其他辅助函数,你可能有一个像线程函数一样的调用堆栈 - > helper1 - > helper2 - > helper3。当helper3现在得出线程终止的结论时,你可以返回每个函数并让每个调用者检测到终止的必要性。或者helper3可以只调用pthread_exit

线程不仅是它们执行的代码,还包括一些OS管理信息,如句柄,优先级,返回值等。此信息必须保留在内存中,直到删除最后一次引用该线程。 pthread_join将释放此引用,以便操作系统可以释放线程。

在Linux终止的线程/进程被置于"僵尸状态"他们只是等待关闭。