Linux 结束线程
来源:互联网 发布:淘宝 sub msg错误 编辑:程序博客网 时间:2024/05/14 21:30
pthread 线程有两种状态,joinable(非分离)状态和detachable(分离)状态,默认为joinable。
joinable:当线程函数自己返回退出或pthread_exit时都不会释放线程所用资源,包括栈,线程描述符等(有人说有8k多,未经验证)。
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());来分离自己。
分类: c/c++多线程, 每日总结
- Linux 结束线程
- linux线程结束
- Linux线程结束控制编程
- linux,线程,结束过程详解
- linux 线程创建和结束
- linux多线程之pthread_cancel结束线程
- Linux 线程的创建与结束
- Linux 线程结束的善后处理
- pthread_cancel() 能结束哪些线程-linux
- Linux线程的几种结束方式
- 线程结束
- 结束线程
- 正确处理 Linux 平台下的线程结束问题
- 正确处理 Linux 平台下的线程结束问题
- Linux结束线程的方法,深度好文
- 等待指定线程结束
- 在外部结束线程
- 如何结束线程?
- ORACLE用户常用数据字典的查询使用方法
- Seo的一些了解
- php中一个诡异bug
- 二维数据查找的杂谈
- C++中的四种强制类型转换的区别 [转]
- Linux 结束线程
- js 中文乱码
- 编写和部署过滤器Filter
- IEnumerable接口使用
- Yii框架扩展ztree【目录树】配置详细说明
- printf函数~学习了
- 查看系统RTC时钟
- Mahout算法集
- js获取url参数的方法