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

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


我想同时等他们。如果两个线程之一终止/退出怎么办?如果服务器保持无限循环运行怎么办?

最佳答案

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

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

如果在调用pthread_join(clientThread, NULL);时clientThread尚未完成执行,它将再次等待,直到clientThread终止。

10-05 20:25