大多數應用都會使用ACE_Reactor::instance()提供的默認反應器實例。
但是你也可以選擇自己的反應器,這是因為ACE使用了Bridge模式(使用兩個不同的類:一個是編程接口,另一個是實現,第一個類會把各個操作傳給第二個類)。
例如使用線程池反應器實現:
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實例
反應器的實現
1)ACE_Select_Reactor
除了Windows之外的所有平臺使用的默認反應器實現(select()函數)。
2)ACE_WFMO_Reactor
Windows上的默認反應器實現。
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()方法,使得優先級更高的事件會得到先處理。
6)GUI集成式反應器
用于X Window System,擴展了ACE_Select_Reactor。
單線程應用,但同時既能響應GUI時間(比如按鈕按下),又能響應你自己的應用事件。
QuickTime Reactor
FastLight Reactor
Tk Reactor
Xt Reactor
|
新聞熱點
疑難解答
圖片精選