Tôi gặp sự cố về chủ đề chính và chuỗi khác trong cùng một quy trình. Khi chức năng chính quay trở lại, các thread khác thoát quá? Tôi có một số nhầm lẫn với tôi. Và tôi viết một số mã thử nghiệm, như sau:thoát khỏi chuỗi chính, có thoát khác không?
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;
}
Khi "trả lại luồng chính". đưa ra, thread test1 và test2 cũng thoát , ai cũng có thể cho tôi biết tại sao?
Văn bản của câu hỏi không khớp với nội dung câu hỏi. Đây có phải là điều gì xảy ra khi luồng chính thoát ra không? Hay đây là điều gì xảy ra khi luồng chính trả về từ hàm 'main'? (Rõ ràng, các chủ đề không thể trở lại nếu nó thoát. Nó có thể làm một hay khác.) –