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