我有一個情況,我有一個發射器對象和一組接收器。接收器屬於同一類,實際上代表了一組相同類型的設備。我正在使用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