线程内的while循环导致程序阻塞(C)

时间:2018-11-21 21:25:10

标签: c multithreading

线程的重点是能够一次运行多个代码块。当想到这种可能性时,我想到的第一件事是同时运行两个无限循环。在尝试使它与两个线程一起使用之前,我试图使其与一个线程一起使用,但没有成功。

所以我有一个这样的线程:

void *myThread(void *args) {
    sleep(0.1);
    while (1) {

    }
    return NULL;
}

我正在像这样创建线程:

pthread_t thread_id;
printf("Before Thread\n");
pthread_create(&thread_id, NULL, myThread, args);
pthread_join(thread_id, NULL);
printf("After Thread\n");

运行此命令时,"After Thread"无法打印!为什么会这样呢?这对我来说毫无意义。

1 个答案:

答案 0 :(得分:2)

因为pthread_join(thread_id, NULL);等待线程完成。而且运行while (1) {}循环的线程将永远无法完成。