如何等待两个pthreads?

How to wait two pthreads?

谁能告诉我最后两行代码之间发生了什么

// Creating Server and Client threads
pthread_create(&serverThread, NULL, (void* (*)(void*))&Server,(void *)0);

pthread_create(&clientThread, NULL, (void* (*)(void*))&Client,(void *)1);

// Wait until serverThread exits
pthread_join( serverThread, NULL);

// Wait until clientThread exits
pthread_join( clientThread, NULL);

我想同时等他们。如果两个线程之一 terminates/exits 怎么办?如果服务器让 运行 无限循环怎么办?

第一个连接 - pthread_join(serverThread, NULL); 将等到 serverThread 终止。

clientThread 在此期间可能会也可能不会终止;如果它终止,它将保持僵尸状态,直到 pthread_join(clientThread, NULL); 被调用。在这种情况下,pthread_join 将立即 return。

如果调用pthread_join(clientThread, NULL);clientThread还没有执行完,会再次等待直到clientThread终止。