线程的重点是能够一次运行多个代码块。当想到这种可能性时,我想到的第一件事是同时运行两个无限循环。在尝试使它与两个线程一起使用之前,我试图使其与一个线程一起使用,但没有成功。
所以我有一个这样的线程:
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"
无法打印!为什么会这样呢?这对我来说毫无意义。
答案 0 :(得分:2)
因为pthread_join(thread_id, NULL);
等待线程完成。而且运行while (1) {}
循环的线程将永远无法完成。