大多數(shù)應(yīng)用都會(huì)使用ACE_Reactor::instance()提供的默認(rèn)反應(yīng)器實(shí)例。
但是你也可以選擇自己的反應(yīng)器,這是因?yàn)锳CE使用了Bridge模式(使用兩個(gè)不同的類:一個(gè)是編程接口,另一個(gè)是實(shí)現(xiàn),第一個(gè)類會(huì)把各個(gè)操作傳給第二個(gè)類)。
例如使用線程池反應(yīng)器實(shí)現(xiàn):
ACE_TP_Reactor* tp_reactor = new ACE_TP_Reactor;
ACE_Reactor* my_reactor = new ACE_Reactor(tp_reactor, 1);//1表示my_reactor銷毀時(shí)也要?jiǎng)h除tp_reactor
ACE_Reactor::instance(my_reactor, 1);//1表示在程序終止時(shí)刪除my_reactor實(shí)例
反應(yīng)器的實(shí)現(xiàn)
1)ACE_Select_Reactor
除了Windows之外的所有平臺(tái)使用的默認(rèn)反應(yīng)器實(shí)現(xiàn)(select()函數(shù))。
2)ACE_WFMO_Reactor
Windows上的默認(rèn)反應(yīng)器實(shí)現(xiàn)。
3)ACE_Msg_WFMO_Reactor
應(yīng)用COM/DCOM服務(wù)器。
4)ACE_TP_Reactor
擴(kuò)展了ACE_Select_Reactor,允許它同時(shí)在多個(gè)線程中運(yùn)行:線程池。
Leader/Follower模板,線程之一將成為領(lǐng)導(dǎo)者,并獲取反應(yīng)器的所有權(quán),以等待事件。
5)ACE_Priority_Reactor
也擴(kuò)展了ACE_Select_Reactor。
使用了ACE_Event_Handler類中的priority()方法,使得優(yōu)先級(jí)更高的事件會(huì)得到先處理。
6)GUI集成式反應(yīng)器
用于X Window System,擴(kuò)展了ACE_Select_Reactor。
單線程應(yīng)用,但同時(shí)既能響應(yīng)GUI時(shí)間(比如按鈕按下),又能響應(yīng)你自己的應(yīng)用事件。
QuickTime Reactor
FastLight Reactor
Tk Reactor
Xt Reactor