客户端在 C 的服务器线程中的 pthread_exit() 之后挂起
Client hangs after pthread_exit() in server thread in C
我有一个服务器可以处理多个客户端。每个连接到它的客户端都在自己的线程中得到服务。现在,如果服务器端发生任何错误,我想通过调用 pthread_exit 退出该线程,并终止该线程正在服务的客户端。然而;当我尝试这样做时,我的客户挂了。此外,这会导致不同线程中的其他客户端也挂起。我在一个随机地点打电话给 pthread_exit 来测试它...
最有可能的问题是您在调用 pthread_exit() 之前没有调用 close(newsockfd)。如果是这样,那么你的服务器线程就消失了,但它用来与客户端通信的套接字仍然打开,即使服务器不再对它做任何事情。然后客户端的传出 TCP 缓冲区填满,客户端无限期地等待服务器从套接字接收更多数据,但这种情况从未发生过。
我有一个服务器可以处理多个客户端。每个连接到它的客户端都在自己的线程中得到服务。现在,如果服务器端发生任何错误,我想通过调用 pthread_exit 退出该线程,并终止该线程正在服务的客户端。然而;当我尝试这样做时,我的客户挂了。此外,这会导致不同线程中的其他客户端也挂起。我在一个随机地点打电话给 pthread_exit 来测试它...
最有可能的问题是您在调用 pthread_exit() 之前没有调用 close(newsockfd)。如果是这样,那么你的服务器线程就消失了,但它用来与客户端通信的套接字仍然打开,即使服务器不再对它做任何事情。然后客户端的传出 TCP 缓冲区填满,客户端无限期地等待服务器从套接字接收更多数据,但这种情况从未发生过。