谁能告诉我最后两行代码之间会发生什么
// 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
终止。