0

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

目前,为了向特定客户端发送文件,需要锁定服务器上的 Contexts 列表。

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

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

干杯,阿德里安

4

2 回答 2

1

没有必要仅仅为了发送文件而锁定上下文列表。让操作系统为您处理任何文件锁定。向客户端发送文件时,让客户端以只读模式打开文件。这允许多个客户端同时读取同一个文件。如果客户端正在上传文件,请以独占模式打开文件,以便其他客户端在上传完成之前无法访问该文件。

于 2012-07-28T18:42:59.210 回答
0

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

可以在这里找到一个相关的问题和一个详细的答案,它显示了如何避免锁定列表:

没有 OnExecute 事件的 TCPserver

于 2012-07-28T10:27:50.040 回答