我有一个情况,我有一个发射器对象和一组接收器。接收器属于同一类,实际上代表一组相同类型的设备。我正在使用 Qt 框架。
发射器本身首先收到一个信号,要求从其中一个设备获取信息。
在相应的插槽中,发射器必须检查哪些接收器“准备好”,然后发送自己的信号以向其中一个设备请求数据(以先准备好的为准)。
发射器接收信号的速度非常快,大约为毫秒。我可以想到三种安全地从其中一个设备请求数据的方法(这些设备存在于它们自己的线程中,所以我需要一个线程安全机制)。设备的数量不是静态的,而是可以变化的。设备的总数非常少(肯定在 5-6 个以下)。
1)在添加或删除设备时连接到所有设备。发出一个请求,并让设备对象自己使用某些特定的设备标签过滤该请求是否是针对他们的。这种方法很好,因为发生检查的请求槽将在专用线程的上下文中执行,但随着设备数量的增加而浪费。
2)当需要发送请求时,动态连接和断开与发射器中的对象。
3) 在需要发送请求时使用 QMetaObject::invokeMethod()。
性能很重要。有谁知道哪种方法是“最好的”,或者是否有更好的方法?
问候
棱镜
注意:澄清:发射器从应用程序获取信号,通过查询设备获取信息。疯狂的 ASCII 艺术去:
(app)<---->(发射器)<------>(接收器)<--|-->物理设备