現(xiàn)在很多用戶們都會使用使用ACE_Reactor::instance()提供的默認反應器,但是我們也可以自己選擇反應器,那么你知道下面實現(xiàn)Reactor反應器嗎?接下來我們就去看看實現(xiàn)Reactor反應器的方法。
大多數(shù)應用都會使用ACE_Reactor::instance()提供的默認反應器實例。
但是你也可以選擇自己的反應器,這是因為ACE使用了Bridge模式(使用兩個不同的類:一個是編程接口,另一個是實現(xiàn),第一個類會把各個操作傳給第二個類)。
例如使用線程池反應器實現(xiàn):
ACE_TP_Reactor* tp_reactor = new ACE_TP_Reactor;
ACE_Reactor* my_reactor = new ACE_Reactor(tp_reactor, 1);//1表示my_reactor銷毀時也要刪除tp_reactor
ACE_Reactor::instance(my_reactor, 1);//1表示在程序終止時刪除my_reactor實例
反應器的實現(xiàn)
1)ACE_Select_Reactor
除了Windows之外的所有平臺使用的默認反應器實現(xiàn)(select()函數(shù))。
2)ACE_WFMO_Reactor
Windows上的默認反應器實現(xiàn)。
3)ACE_Msg_WFMO_Reactor
應用COM/DCOM服務器。
4)ACE_TP_Reactor
擴展了ACE_Select_Reactor,允許它同時在多個線程中運行:線程池。
Leader/Follower模板,線程之一將成為領導者,并獲取反應器的所有權,以等待事件。
5)ACE_Priority_Reactor
也擴展了ACE_Select_Reactor。
使用了ACE_Event_Handler類中的priority()方法,使得優(yōu)先級更高的事件會得到先處理。
6)GUI集成式反應器
用于X Window System,擴展了ACE_Select_Reactor。
單線程應用,但同時既能響應GUI時間(比如按鈕按下),又能響應你自己的應用事件。
QuickTime Reactor
FastLight Reactor
Tk Reactor
Xt Reactor
上文介紹的就是實現(xiàn)Reactor反應器的方法,如果你還不了解的話就請留言給武林小編吧,小編會一一為你解答。
新聞熱點
疑難解答
圖片精選