linux系统中分离线程的使用,LINUX系统中分离线程的使用

摘要:本文简要介绍了LINUX多线程编程中分离线程的概念并给出了使用pthread库时需要用到分离线程

的程序实例。

关键字:分离线程,detach,pthread_create,pthread_detach,ENOMEM,12

线程一般有分离和非分离两种状态。默认的情形下是非分离状态,父线程维护子线程的某些信息并

等待子线程的结束,在没有显示调用join的情形下,子线程结束时,父线程维护的信息可能没有得到及时释

放,如果父线程中大量创建非分离状态的子线程(在LINUX系统中使用pthread_create函数),可能会产生表

示出错的返回值12,即ENOMEM(在errno.h中定义),表示栈空间不足。而对分离线程来说,不会有其他的

线程等待它的结束,它运行结束后,线程终止,资源及时释放。

为了防止pthread_create线程是出现返回值12(即ENOMEM)的错误,建议以如下的方式

创建分离状态的线程!

#include

#include

#include

#include

#include

//线程入口函数

void *func(void *arg)

{

int i = *(int *)(arg);

printf("I'am worker:%d\n",i);

}

int main()

{

//线程id

pthread_t tid;

//创建大量线程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;

}

转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值