分类: 系统运维
2012-05-30 15:29:19
===============================================================================
今 天写了个程序,但是很郁闷的是没有得到预想的结果:
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在主线程退出后,结束了。另外分离属性是让线程结束后,自己释放资源,并不是说能够脱离进程独自运行。