[quote=引用 2 楼 zgglj 的回复:] 2)创建了线程,但是线程退出时没有线程调用pthread_join() 线程资源没有回收,如果持续创建线程,到一定数量后将不能再创建! 可以在创建的线程中使用pthread_detach(pthread_self()),主线程就可以不调用pthread_join() 1)只有pthread_cleanup_push() 直到进程退出都 没有调用pthead_cleanup_pop() pthread_cleanup_push压栈的函数在3种情况下会调用, 该线程调用pthread_exit()、其它线程调用pthread_cancel(pid)、该线程调用pthread_cleanup_pop(int execute) 不属于以上三种情况时,如果进程不退出,估计就是有压栈信息的内存泄露
2)创建了线程,但是线程退出时没有线程调用pthread_join() 线程资源没有回收,如果持续创建线程,到一定数量后将不能再创建! 可以在创建的线程中使用pthread_detach(pthread_self()),主线程就可以不调用pthread_join() 1)只有pthread_cleanup_push() 直到进程退出都 没有调用pthead_cleanup_pop() pthread_cleanup_push压栈的函数在3种情况下会调用, 该线程调用pthread_exit()、其它线程调用pthread_cancel(pid)、该线程调用pthread_cleanup_pop(int execute) 不属于以上三种情况时,如果进程不退出,估计就是有压栈信息的内存泄露
23,121
社区成员
74,508
社区内容
加载中
试试用AI创作助手写篇文章吧