Multithreading 异步数据采集驱动程序使用什么抽象

Multithreading 异步数据采集驱动程序使用什么抽象,multithreading,delphi,asynchronous,omnithreadlibrary,Multithreading,Delphi,Asynchronous,Omnithreadlibrary,我想在我的服务器应用程序中实现一种机制,但我不确定哪种OTL抽象最合适 我的应用程序收集各种类型设备的数据。 其中一些使用同步通信,从而在我的服务器应用程序中生成Delphi事件。(推式) 其中一些使用异步通信,要求我的应用程序定期请求可用的最新数据。(像拉一样) 因为我希望我的服务器应用程序在尽可能频繁地请求新的可用数据时保持响应,所以我希望将“拉驱动程序”放在一个单独的线程中,该线程将逐个请求所有配置的数据点 我希望我的主线程生成这个OTL对象,然后在主线程中作为delphi事件接收结果。这

我想在我的服务器应用程序中实现一种机制,但我不确定哪种OTL抽象最合适

我的应用程序收集各种类型设备的数据。 其中一些使用同步通信,从而在我的服务器应用程序中生成Delphi事件。(推式) 其中一些使用异步通信,要求我的应用程序定期请求可用的最新数据。(像拉一样)

因为我希望我的服务器应用程序在尽可能频繁地请求新的可用数据时保持响应,所以我希望将“拉驱动程序”放在一个单独的线程中,该线程将逐个请求所有配置的数据点

我希望我的主线程生成这个OTL对象,然后在主线程中作为delphi事件接收结果。这将模拟我的服务器主代码已经针对的“推式”。 将其视为您启动的线程,该线程定期请求要监视的数据,并且仅在值发生更改时向您发送事件

您认为哪个OTL抽象(高级?低级?)适合这种行为


谢谢。

老实说,我不确定OTL在这里能给您带来多少好处。我编写了许多用于管理硬件设备的类,并且类模型几乎总是一个普通的
TThread
子类。OTL很适合拆分任务和工作包、队列、并行计算等。但是,在这种情况下,您不想做任何这些。您需要的是一个类,该类为您的设备建模并封装它可以执行的功能

这将是一个专用于向设备泵送读写操作的单个工作线程。只要封装设备的类保持活动状态,
TThread
就有意义,它将是一个长寿命的线程。您的线程将是一个连续运行的简单循环,轮询所有必需的数据并刷新任何写入请求

该类还将用作设备参数的数据缓存,您将需要某种类型的同步设备(互斥、临界区等)为了通过属性保护对这些字段的读写,这些同步对象也可以作为类字段存在,并且线程和类模型在一个实体中共存。如果需要事件通知,那么这些通知也可以方便地包装到同一个模型中。一个设备,一个线程,一个类。对于
TThread
后代来说,这是一个完美的工作