私は同じプロセスでメインスレッドと他のスレッドについて問題があります。メイン関数が戻ると、もう一方のスレッドも終了しますか?私はいくつか私を混乱させる。そして、私はこのようなテストコードを書いています:メインスレッド出口、他の出口もありますか?
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'関数から復帰したときに何が起きるのでしょうか? (明らかに、スレッドが終了した場合、スレッドはそれを返すことはできません)。 –