
创立一个线程默许的状况是joinable, 假如一个线程完毕
运转但没有被join,则它的状况类似于进程中的Zombie Process,即还有一部分资源没有被收回(退出状况码),所以创立线程者应该调用pthread_join来等候线程运转完毕,并可得到线程的退出代码,收回其资源(类似于wait,waitpid)
可是调用pthread_join(pthread_id)后,假如该线程没有运转完毕,调用者会被堵塞,在有些情况下咱们并不期望如此,比如在Web服务器中当主线程为每个新来的链接创立一个子线程进行处理的时分,主线程并不期望由于调用pthread_join而堵塞(由于还要持续处理之后到来的链接),这时能够在子线程中参加代码
pthread_detach(pthread_self())
或许父线程调用
pthread_detach(thread_id)(非堵塞,可当即回来)
这将该子线程的状况设置为detached,则该线程运转完毕后会主动开释一切资源。