
Pthread join 详解在任何一镐点上,线程是能结合的(joinable)磺分离的(detached) 。 一羔合的线程无法被其它线程收回其资源跟杀死。 在被其它线程回收之前, 它的存储圃矗ɡ缯唬┦遣皇头诺摹O喾矗桓氲南叱淌遣荒鼙黄渌叱袒厥栈赖模 存储拼在它解除时由平台自动释放。 默认情楷线程被建立成能结合的。为了防止存储譬,每羔合线程都应 该要么被显示地回收,即祊thread_join;要么通过祊thread_detach 函数被分离。 [cpp] int pthread_join(pthread_t tid, void**thread_return); 圈载0pthreadjoin返回值pthreadjoin返回值,软郧零。 int pthread_join(pthread_t tid, void**thread_return); 圈载0, 软郧零。 线程通过读取pthread_join 函数等待其它协程终止。pthread_join 函数分阻塞,直到线程 tid 终止,将 线程例程返回的(void*)指针数组为 thread_return 指匣置,然赫已中止线程占用 的所有内存拼。[cpp] view plaincopyprint?int pthread_detach(pthread_t tid); 圈载0,软郧零。

int pthread_detach(pthread_t tid); 圈载0,软郧零。 pthread_detach 用于分离能结合线程 tid。线程从而通过以 pthread_self()为参 数的 pthread_detach 荡分离他们自己。 如果一羔合线程结束运行但没有被 join,阅状态类似于进程中的 Zombie Process, 即还有一部分资源没有被回收, 所以创建线程者应该祊thread_join 来期待线 程运行结束,并能得到线程的退畴,回收其资源。 由于祊thread_join 虹果该泛型没有运行结束,颠会被阻塞,在有些 情恳们并不希望这么。 例如, Web 服涡当痔为每复的连接请迁一 子线程进行处理的时禾并不希望襭thread_join 而阻塞(夜要再次处 理之捍的连接请牵馐笨梢栽谧酉叱讨屑尤氪 pthread_detach(pthread_self()) 桓线程祊thread_detach(thread_id)(非阻塞,可立刻返回)这将该子线程的状况更改为分离的(detached) ,如此一来,该线程运行结束涸动 释放所有资源。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-138012-1.html
此君明白人
好棒