簡體   English   中英

客戶端在C中的服務器線程中的pthread_exit()之后掛起

[英]Client hangs after pthread_exit() in server thread in C

我有一台服務器,可以處理多個客戶端。 連接到它的每個客戶端都在其自己的線程中得到服務。 現在,如果服務器端發生任何錯誤,我想通過調用pthread_exit退出該線程,並終止該線程正在服務的客戶端。 然而; 當我嘗試這樣做時,我的客戶就掛了。 同樣,這也會導致處於不同線程中的其他客戶端也掛起。 我隨機調用pthread_exit進行測試...

最有可能的問題是,在調用pthread_exit()之前沒有調用close(newsockfd)。 如果是這樣,那么您的服務器線程就會消失,但是即使服務器不再對其執行任何操作,它用來與客戶端通信的套接字仍保持打開狀態。 然后,客戶端的傳出TCP緩沖區將填滿,客戶端將無限期地等待服務器從套接字中接收更多數據,而這種情況永遠不會發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM