一个可join的线程所占用的内存仅当有线程对其执行了pthread_join()后才会释放,因此为了避免内存泄漏,任何线程的终止,要么已设为DETACHED,要么就需要使用pthread_join()来回收。
4.关于pthread_exit()和return
理论上说,pthread_exit()和线程宿体函数退出的功能是相同的,函数结束时会在内部自动调用pthread_exit()来清理线程相关的资源。但实际上二者由于编译器的处理有很大的不同。
在进程主函数(main())中调用pthread_exit(),只会使主函数所在的线程(能够说是进程的主线程)退出;而假如是return,编译器将使其调用进程退出的代码(如_exit()),从而导致进程及其任何线程结束运行。
其次,在线程宿主函数中主动调用return,假如return语句包含在pthread_cleanup_push()/pthread_cleanup_pop()对中,则不会引起清理函数的执行,反而会导致segment fault。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




