日期:2014-05-16  浏览次数:20756 次

pthread api的这俩api忘记使用是否会导致资源泄漏?
1)只有pthread_cleanup_push()  直到进程退出都 没有调用pthead_cleanup_pop()
2)创建了线程,但是线程退出时没有线程调用pthread_join()

问下是否会导致资源泄漏?泄漏的又是啥资源阿 ?

------解决方案--------------------
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)
不属于以上三种情况时,如果进程不退出,估计就是有压栈信息的内存泄露