Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13369
  • 博文数量: 1
  • 博客积分: 91
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-05 10:34
文章分类
文章存档

2012年(1)

我的朋友
最近访客

分类: 系统运维

2012-05-30 15:29:19

今天看了下thyxy大神的博文,其中有个小程序:如下
转(thyxy博文:linux线程 基本函数 笔记)

===============================================================================

今 天写了个程序,但是很郁闷的是没有得到预想的结果:

 

pthread_t tid;

int main(void)

{

    pthread_attr_t attr;

    pthread_attr_init(&attr);

    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

    pthread_create(&attr, &tid, func, NULL);

    pthread_attr_destroy(&attr);

    printf("Main route exit.\n");

    return 0;

}

void * func(void *args)

{

    int i=0;

    for(; 1;)

        printf("Thread: i is %d\n", i);

    return ((void *)0);

}

 

运行结果为,一直打印Thread:i,过了1s左右,打印Main route exit.然后所有打印结束了。

但是用detach方法新建thread,不是应该和主线程分离的么?想不同了。

 

------------------------------------------

感觉是因为主线程退出,从而进程结束,内核回收了进程的资源,而线程1需要进程的资源来运行,所以出现,线程1在主线程退出后,结束了。另外分离属性是让线程结束后,自己释放资源,并不是说能够脱离进程独自运行。

阅读(1381) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~