2016-03-09 18 views
1

在这本书中,有句:什么意思是在'unix'中的'detach'线程?

通过调用pthread_join(),我们自动将与我们在分离国家要加入,使得其资源可以回收线程。 如果线程已经在分离状态,pthread_join()可能会失败,返回EINVAL

什么意思是线程中的“分离”?

+0

当分离线程返回时,其资源将自动回收,而无需调用pthread_join。 – 2501

+1

这听起来像一本有趣的书,但它并不完全符合我读过的[这里](https://computing.llnl.gov/tutorials/pthreads/)关于分离vs连接。 – unwind

回答

1

每个线程都拥有资源,这些资源是在创建线程时获取的。当线程的函数返回时需要释放资源(就像你需要释放动态分配的内存一样,或者关闭你打开的文件句柄)。

默认情况下,线程的创建者(您)保留线程的所有权以及收回其资源的责任。你可以通过调用join来做到这一点,它阻塞直到线程的函数返回并破坏线程资源。

或者,您可以将线程置于“分离”状态,在这种情况下,您不再拥有它。线程现在“拥有自己”,一旦线程函数返回,线程就会销毁它自己。您无法加入分离的线程,因此您无法在线程完成时进行同步。 (你可能会认为这样做是不好的主意,因为它意味着你放弃了完全理解程序的控制流程。)

相关问题