2010-03-10 190 views
1

我目前有一個程序,使用繁忙的池和一堆線程來監視對象的狀態,處理數據,並傳遞數據。這是很難管理/浪費cpu時間。我正在尋找刪除線程和使用信號/插槽,因爲沒有我的代碼「阻止」。C++信號/插槽:插槽處理和最佳C++信號庫?

所以我會發出我的對象的狀態,這很容易。更難的是我也想用插槽來傳遞數據,並傳遞數據。

基本上: A-> SignalIHAVEDATA(B.slot()和C.slot()) B和C可能無法處理數據。所以我應該在B和C中保持一個標誌,告訴他們他們是數據。或者我應該每隔X毫秒重新發出一次信號,直到數據被採集。

另外..

可以說B接受數據。它是有道理的,在B.Slot內部,它需要handleToA-> getData(); & &處理數據? & & signalAnotherThing。

如果我發出signalA並且在slotA內,我發出signalB在slotA返回之前slotB會被處理嗎? (如果這個鏈條很長slotA回來之前可能需要一段時間?)

感謝您的幫助:)

+0

你看過Qt框架嗎? – FrustratedWithFormsDesigner 2010-03-10 15:49:29

+0

相關:http://stackoverflow.com/questions/359928/which-c-signals-slots-library-should-i-choose – avakar 2010-03-10 15:53:50

回答

4

最好的信號&插槽庫當然是Boost.Signal2的。 它只是可移植的,線程安全的,基於模板的和標題。你會愛上它的。

是的。我知道你在一年前問過這個問題,但我根本無法解決它。

+0

又一年後,我感謝你! – 2012-05-16 20:29:18