(转载)Linux系统中分离线程的使用
2013-05-01 23:30
218 查看
摘要:本文简要介绍了LINUX多线程编程中分离线程的概念并给出了使用pthread库时需要用到分离线程
的程序实例。
关键字:分离线程,detach,pthread_create,pthread_detach,ENOMEM,12
线程一般有分离和非分离两种状态。默认的情形下是非分离状态,父线程维护子线程的某些信息并
等待子线程的结束,在没有显示调用join的情形下,子线程结束时,父线程维护的信息可能没有得到及时释
放,如果父线程中大量创建非分离状态的子线程(在LINUX系统中使用pthread_create函数),可能会产生表
示出错的返回值12,即ENOMEM(在errno.h中定义),表示栈空间不足。而对分离线程来说,不会有其他的
线程等待它的结束,它运行结束后,线程终止,资源及时释放。
为了防止pthread_create线程是出现返回值12(即ENOMEM)的错误,建议以如下的方式
创建分离状态的线程!
#include <errno.h> #include <pthread.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> //线程入口函数 void *func(void *arg) { int i = *(int *)(arg); printf("I'am worker:%d\n",i); } int main() { pthread_t tid; //线程id //创建大量线程 int count = 10000;//多次循环 for(int j=0 ; j < count ; ++j) { //线程参数 int * p = new int(j); //创建线程 int ret= pthread_create(&tid, NULL, func, (void*)p); if( ret )//创建失败 { printf("create thread error:%d\n",ret); } else//创建成功 { //分离线程回收线程的stack占用的内存 pthread_detach(tid); } } return 0; }
相关文章推荐
- 【Linux系统编程】线程堆栈大小的使用介绍
- Linux系统中静态库和动态库的生成和使用(转载)
- 在Linux中使用线程与线程的合并与分离
- Linux 下使用 NMON 分析系统性能(转载+实战)
- (转载addone)完全使用Linux作为桌面系统 —— 使用Linux两年记 --软件列表
- [转载]Linux系统下超强远程同步备份工具Rsync使用详解
- 【转载】使用 /proc 文件系统来访问 Linux 内核的内容
- (转载)Linux多线程,线程的分离与结合
- Linux下使用NMON监控、分析系统性能 -转载
- 【转载】----Linux下使用ext3grep恢复目录及文件指南(ext3文件系统)
- 转载:python获取linux系统内存、cpu、网络使用情况
- 转载Linux系统下常见性能分析工具的使用(南非蚂蚁出品~~)
- Linux系统下使用split命令分割大文件 (转载)
- (转载) 使用 Linux 系统调用的内核命令, 探究 SCI(systen call interface) 并添加自己的调用.
- 【转载】让windows使用linux系统的命令
- Linux系统下C语言编程:线程的创建和使用
- Linux 下使用 NMON 分析系统性能(转载+实战)
- Linux系统编程:fork函数的使用【循环创建N个子线程】
- [转载] Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍