客户端在服务器线程中的pthread_exit()后挂起C
问题描述:
我有一台服务器用于处理多个客户端。连接到它的每个客户端都在其自己的线程中进行服务。现在,如果服务器端出现任何错误,我想通过调用pthread_exit来退出该线程,并终止该线程正在服务的客户端。然而;当我尝试这样做时,我的客户挂了。此外,这会导致处于不同线程中的其他客户端也会挂起。我在随机点中调用pthread_exit来测试它...客户端在服务器线程中的pthread_exit()后挂起C
答
最有可能的问题是,在调用pthread_exit()之前,您没有调用close(newsockfd)。如果是这样,那么你的服务器线程就会消失,但是它用来与客户端通信的套接字保持打开状态,即使服务器不再使用它。然后,客户端的传出TCP缓冲区填满,客户端无限期地等待服务器从套接字recv()更多的数据,这从来没有发生过。
非常感谢!这似乎已经解决了这个问题。 – coder4lyf