0

我有一个服务器来处理多个客户端。每个连接到它的客户端都在自己的线程中提供服务。现在,如果服务器端发生任何错误,我想通过调用 pthread_exit 退出该线程,并终止该线程正在服务的客户端。然而; 当我尝试这样做时,我的客户正在挂起。此外,这也会导致处于不同线程中的其他客户端也挂起。我在一个随机的地方调用了 pthread_exit 来测试它......

4

1 回答 1

1

最有可能的问题是您在调用 pthread_exit() 之前没有调用 close(newsockfd)。如果是这样,那么您的服务器线程就会消失,但它用来与客户端通信的套接字仍然打开,即使服务器不再对它做任何事情。然后客户端的传出 TCP 缓冲区填满,客户端无限期地等待服务器从套接字接收更多数据,这永远不会发生。

于 2015-10-16T15:21:20.807 回答