德尔福(Indy)特定锁定

时间:2012-07-28 09:19:25

标签: delphi indy

假设我有一些协调许多文件传输的系统;也就是说,我有一个Indy TCP服务器控制大型分布式系统上的文件同步。

目前,为了将文件发送到特定客户端,需要在服务器上锁定上下文列表。

如果我有500个客户端都进行了连接和同步,我怀疑这种锁定在性能上会非常昂贵,因为它会暂停所有客户端连接线程。

有没有办法加快速度,或者这不是一个真正的问题吗?是否值得在许多服务器上分发客户?有什么诀窍?

干杯, 阿德里安

2 个答案:

答案 0 :(得分:1)

无需锁定上下文列表即可发送文件。让操作系统为您处理任何文件锁定。将文件发送到客户端时,让客户端以只读模式打开文件。这允许多个客户端同时从同一文件中读取。如果客户端正在上载文件,请以独占模式打开该文件,以便其他客户端在上载完成之前无法访问该文件。

答案 1 :(得分:0)

如果客户端始终连接,则OnExecute方法(在循环中运行直到连接终止)可用于在客户端可用时将数据发送到客户端。然而,这要求协议在您的控制之下。

可以在此处找到相关问题以及显示如何避免锁定列表的detailed answer

TCPserver without OnExecute event