detachable:线程结束时会自己主动释放资源。
Linux man page said:
When a joinable thread terminates, its memory resources (thread descriptor and stack) are not deallocated until another thread performs pthread_join on it. Therefore, pthread_join must be called ?once ?for each joinable thread created to avoid memory leaks.
因此,joinable 线程运行完后不使用pthread_join的话就会造成内存泄漏。
解决的方法:
1.// 创建线程前设置 PTHREAD_CREATE_DETACHED 属性
pthread_attr_t attr;
pthread_t thread;
pthread_attr_init (&attr);
pthread_attr_setdetachstat(&attr, PTHREAD_CREATE_DETACHED);
pthread_create (&thread, &attr, &thread_function, NULL);
pthread_attr_destroy (&attr);
2.当线程为joinable时,使用pthread_join来获取线程返回值。并释放资源。
3.当线程为joinable时,也可在线程中调用 pthread_detach(pthread_self());来分离自己。
三。參考文件
1,http://blog.csdn.net/bbs598598/article/details/7536853
原文:https://www.cnblogs.com/xfgnongmin/p/10611110.html