7
即時通訊使用Tclientsocket構件實現或Indy的TIdTCPClient(取決於項目)線程是否可以共享相同的客戶端套接字?
我有幾個線程處理每一個項目,有時需要在連接的客戶端套接字發送數據。 (數據讀取形成承插口是不是在處理線程使用)
基本上我的問題是...
- 是可能的?
- 它是「安全」嗎?
或者我應該
- 具有每個線程的客戶機套接字或
- 一些有點兒的編組/關鍵部分
的Delphi -7-印-9
即時通訊使用Tclientsocket構件實現或Indy的TIdTCPClient(取決於項目)線程是否可以共享相同的客戶端套接字?
我有幾個線程處理每一個項目,有時需要在連接的客戶端套接字發送數據。 (數據讀取形成承插口是不是在處理線程使用)
基本上我的問題是...
或者我應該
的Delphi -7-印-9
多個線程可以讀寫同一個套接字。因爲每次你在accept
時,它都會提取掛起連接隊列上的第一個連接,創建一個具有相同套接字屬性的新套接字,併爲該套接字分配一個新的文件描述符。
因此,每個接受的連接只有一個線程。
如果您問是否可以在接受的連接上進行多次寫入/讀取,您將需要鎖定功能,因此會損失並行性優勢。如果您想要對一個較長的進程進行線程處理,然後將結果寫入套接字,請使用同步按正確的順序進行寫入。
順便說一句,Indy 9.x已經過時 – 2010-12-10 10:42:39
你好,我知道,(有點德爾菲7我猜)它的事情的「名單」) – 2010-12-10 12:45:19