[英]Why do unjoined pthreads leak resources when thread is not detached after pthread_create
我举了一个例子
https://www.kernel.org/doc/man-pages/online/pages/man3/pthread_create.3.html
通过使用pthread_create
创建线程而不调用pthread_join
使它无限运行(小睡眠,因此CPU使用不是瓶颈,因此不会排队线程)。 这会导致内存泄漏,最终PC内存不足。 当我在创建线程程序后立即添加pthread_detach
,表现很好,并且在一段时间后内存使用量保持不变。
我的印象是当一个线程退出(在函数关闭时}
,如果给予pthread_create
则清除所有资源。
我的印象是当一个线程退出(在函数关闭时),如果给予pthread_create,则清除所有资源。
这是一个错误的印象。 如您所说,当您调用pthread_join或线程是分离线程时,所有资源都会为已完成的线程释放。
对于非分离线程,必须保留一些资源 - 否则您无法通过稍后调用pthread_join来获取线程的返回值。 分离的线程无法连接,因此您无法从中获取退出值。
许多实现将此返回值存储在线程的堆栈上,从而保持整个堆栈,直到有人在非分离线程上调用pthread_join。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.