【发布时间】:2012-08-06 05:43:03
【问题描述】:
我对同一进程中的主线程和其他线程有疑问。当主函数返回时,其他线程是否也退出?我对此感到困惑。
考虑以下测试代码:
void* test1(void *arg)
{
unsigned int i = 0;
while (1){
i+=1;
}
return NULL;
}
void* test2(void *arg)
{
long double i = 1.0;
while (1){
i *= 1.1;
}
return NULL;
}
void startThread ( void * (*run)(void*), void *arg) {
pthread_t t;
pthread_attr_t attr;
if (pthread_attr_init(&attr) != 0
|| pthread_create(&t, &attr, run, arg) != 0
|| pthread_attr_destroy(&attr) != 0
|| pthread_detach(t) != 0) {
printf("Unable to launch a thread\n");
exit(1);
}
}
int main()
{
startThread(test1, NULL);
startThread(test2, NULL);
sleep(4);
printf("main thread return.\n");
return 0;
}
当“主线程返回”时。打印出来,线程test1和test2也退出了,谁能告诉我为什么?
【问题讨论】:
-
问题文本与问题正文不匹配。这是关于主线程退出时发生的事情吗?或者这是关于当主线程从
main函数返回时会发生什么? (显然,如果线程退出,则无法返回。它可以做一个或另一个。)
标签: c multithreading pthreads