繁体   English   中英

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

[英]what means 'detach' in thread on the unix?

书中有一些句子:

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

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

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

默认情况下,线程的创建者(= you)保留线程的所有权以及回收其资源的责任。 您可以通过调用join执行此操作, join会阻塞直到线程的函数返回,然后破坏线程资源。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM