C 什么是';分离';unix上的线程中?

C 什么是';分离';unix上的线程中?,c,linux,multithreading,C,Linux,Multithreading,书中有以下句子: 通过调用pthread_join(),我们自动将要加入的线程置于分离的状态,以便可以恢复其资源。 如果线程已经处于分离状态,pthread_join()可能会失败,返回EINVAL 线程中的“分离”是什么意思???每个线程都拥有资源,这些资源是在创建线程时获得的。当线程的函数返回时,需要释放资源(就像需要释放动态分配的内存或关闭打开的文件句柄一样) 默认情况下,线程的创建者(=您)保留线程的所有权和回收其资源的责任。您可以通过调用join来实现这一点,它会一直阻塞,直到线程的函

书中有以下句子:

通过调用
pthread_join()
,我们自动将要加入的线程置于分离的状态,以便可以恢复其资源。 如果线程已经处于分离状态,
pthread_join()
可能会失败,返回
EINVAL


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

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

默认情况下,线程的创建者(=您)保留线程的所有权和回收其资源的责任。您可以通过调用
join
来实现这一点,它会一直阻塞,直到线程的函数返回,然后销毁线程资源


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

当分离的线程返回时,它的资源将自动回收,而无需调用pthread_join。这听起来像一本有趣的书,但这与我读到的关于分离vs连接的内容并不完全一致。