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

当线程内的循环导致程序阻塞时(C),c,multithreading,C,Multithreading,线程的要点是能够同时运行多个代码块。当这种可能性出现在我脑海中时,我想到的第一件事是同时运行两个无限循环。在我尝试使用两个线程之前,我尝试使用一个线程,但没有成功 所以我有一条这样的线: void *myThread(void *args) { sleep(0.1); while (1) { } return NULL; } 我正在创建这样的线程: pthread_t thread_id; printf("Before Thread\n"); pthread_

线程的要点是能够同时运行多个代码块。当这种可能性出现在我脑海中时,我想到的第一件事是同时运行两个无限循环。在我尝试使用两个线程之前,我尝试使用一个线程,但没有成功

所以我有一条这样的线:

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");

当我运行此命令时,
“线程后”
不会打印!为什么会这样?这对我来说毫无意义。

因为
pthread\u join(thread\u id,NULL)等待线程完成。运行
而(1){}
循环的线程永远不会结束。

您可能需要查找异步functions@Brian不,我不想要异步函数,我需要
pthread\u连接(thread\u id,NULL)行吗@Martineralecký@MattX如果你不把它放在那里,线程启动后会立即打印After Thread消息,它会继续运行。如果你在
myThread
中将代码更改为循环10次,然后打印出一些内容或休眠,然后返回,你会等待它完成main中对
pthread_join
的调用。然后你的程序就可以退出了。如果您只需保持
myThread
原样并调用
pthread\u join
,您的程序将不会等待线程完成并立即退出。@MattX您是否需要它取决于您正试图做什么,我们不知道。您应该做什么取决于这个线程正在做什么,以及它与整个程序正在做什么的关系。