当前位置: 技术问答>linux和unix
线程资源回收问题
来源: 互联网 发布时间:2016-07-09
本文导语: 主线程接收命令,然后根据命令创建子线程完成工作! 用pthread_create(&thread_id[i], ...........),在需要的时候结束此线程,我先用pthread_cancel(thread_id[i])关闭线程thread_[i]然后用pthread_join()或pthread_detach()来回收线程thread_i...
主线程接收命令,然后根据命令创建子线程完成工作!
用pthread_create(&thread_id[i], ...........),在需要的时候结束此线程,我先用pthread_cancel(thread_id[i])关闭线程thread_[i]然后用pthread_join()或pthread_detach()来回收线程thread_id[i]的资源,但是会内存泄露!
我又试了在线程函数里面开头加上pthread_detach(pthread_self()),然后用个标记在线程需要结束时,通过标记让线程自己用pthread_exit()来结束! 还是会内存泄露!
或许不是内存泄露,不过随着程序运行内存使用率越来越大,表现出来是内存泄露的现象具体是不是我也不清楚!各位大虾帮帮忙啊,救命的!
用pthread_create(&thread_id[i], ...........),在需要的时候结束此线程,我先用pthread_cancel(thread_id[i])关闭线程thread_[i]然后用pthread_join()或pthread_detach()来回收线程thread_id[i]的资源,但是会内存泄露!
我又试了在线程函数里面开头加上pthread_detach(pthread_self()),然后用个标记在线程需要结束时,通过标记让线程自己用pthread_exit()来结束! 还是会内存泄露!
或许不是内存泄露,不过随着程序运行内存使用率越来越大,表现出来是内存泄露的现象具体是不是我也不清楚!各位大虾帮帮忙啊,救命的!
|
pthread_join()或pthread_detach()作的是回收,线程“维护”资源,它并不能帮你回收malloc分配出去的内存。
|
线程的堆栈操作系统会自动回收的,内存泄漏一般是new或malloc造成的,仔细检查分配内存的有关代码,有没有正确的释放内存。