我在同一個進程中遇到了有關主線程和其他線程的問題。當主函數返回時,另一個線程也退出了嗎?我有些困惑。我寫了一些測試代碼,如下所示:,還有其他出口嗎?
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'函數返回時會發生什麼? (很顯然,如果線程退出,線程不能返回,它可以做一個或另一個。) – 2016-02-17 10:37:08