如何在监控数百个实时设备的同时使我的应用程序表现良好?

Sal*_*dor 10 delphi multithreading delphi-xe

我需要在Delphi中开发一个实时(即,每秒至少请求和接收一次信息)监视应用程序,它监视多个远程设备(可能是数百个).通过TCP/IP进行通信.

我正在寻找建议开发这个应用程序,避免100%的CPU消耗,并尽量减少使用的RAM量.换句话说,我希望我的应用程序保持响应,而不是阻止系统或消耗所有资源.

我主要担心的是使用线程来监控每个远程设备.我的应用程序可以创建的线程数是否有限制?可以使用低优先级或中优先级启动线程以最小化CPU消耗吗?

关于最佳内存使用的建议也是受欢迎的.

Gra*_*erB 3

您的直觉是对的,您想要处理主线程之外的线程中的日志记录。创建一个简单的 tcp/ip 服务器,为传入连接创建一个新线程并在那里处理日志记录。显然,您需要做一些事情,例如跟踪每个线程,以便能够在服务器应用程序关闭时终止它,并且如果您想重用它们而不是不断创建和销毁它们,则可能需要实现线程池/队列。但您所描述的实际上是一个概念上相当简单的服务器应用程序。您可以创建的线程数量没有硬性限制。但是,除非连接是恒定的并且保持开放,否则您可能会惊讶地发现实际上同时创建的连接很少。