ACE_Reactor(一)整体理解ACE_Reactor
ACE_Reactor框架的任务:
ACE_Reactor类的实现。 ACE_Reactor::notify方法 而在实际的ACE_Select_Reactor_Notify 类中,有如下指针说明: ACE_Reactor::run_reactor_event_loop方法 再来看具体的实现: int ACE_Dev_Poll_Reactor::handle_events()
{
return handle_events_i()
{
event_num=work_pending_i(){
return epoll_wait();// or poll;
}
Dispatch(){
dispatch_timer_handler(guard){
timer_queue->expire_single
}
dispatch_io_event(guard){
disp_mask=WIRTE/READ/EXCPET_MASK;
callback=handle_output/input/exception;
this->upcall(){
(event_handler->*callback)(handle)
};//dispatch the detected event;
}
}
};
}
handle_events_i在其中调work_pending_i,这个函数中,若支持epoll则用epoll_wait去等待事件,否则用poll,返回值是检测到event数量。但是这里在事件分发处理时都是只处理第一个。 ACE_Select_Reactor:使用select作为多路复用分离的函数, ACE_TP_Reactor:在ACE_Select_Reactor基础上仍使用select作为多路复用分离的函数,扩展使用了领导者跟随者模型,将ACE_Select_Reactor事件扩展成一个线程池。 此时配合ACE_Pipe类实现ACE_Select_Reactor的消息通知机制,提供OS核内部传输数据的、可移植的双方向IPC机制。 相关参考书目: Pattern-Oriented Software Architecture Volume 1: A System of Patterns ebook PDF for free (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |