我有一个情况,我有一个发射器对象和一组接收器。接收器属于同一类,实际上代表了一组相同类型的设备。我正在使用Qt框架。动态地向一个对象发射信号
发射器本身首先获取信号,从其中一个设备获取信息。
在相应的插槽中,发射器必须检查哪些接收器已准备就绪,然后发送自己的信号以请求数据到其中一个设备(以先准备好的为准)。
发射器接收信号的速度非常快,大约为几毫秒。有三种方法我可以考虑只从其中一个设备安全地请求数据(这些设备存在于它们自己的线程中,所以我需要一个线程安全的机制)。设备数量不是静态的,可以改变。设备总数很少(绝对在5-6之下)。
1)连接到所有设备时,他们被添加或删除。发出一个请求并让设备对象自己过滤出请求是否使用某个特定的设备标签。这种方法很好,因为发生检查的请求位置将在专用线程的上下文中执行,但随着设备数量的增加而浪费。
2)当需要发送请求时,在发射器中动态连接和断开连接。
3)当需要发送请求时,使用QMetaObject :: invokeMethod()。
表现很重要。有谁知道哪种方法是“最好的”,或者是否有更好的方法?
问候
的PRI
注:为了澄清:从发射器应用程序获取的信号,通过查询设备以获取信息。疯狂的ASCII艺术去:
(APP)< ---->(发射器)< ------>(接收器)< - | - >物理设备
我的问题措辞严重,并更新它来澄清一点。 1)是的,但现在我只关心从应用程序到接收器的信号流。 2)接收器是相同的,但不共享数据。 ACE好像对此可能是过度的。 – Prismatic 2012-01-09 00:05:18
@Pris Reactor即使不与'ACE'一起工作,我仍在调整答案。 – Karlson 2012-01-09 00:32:18