Reactor
1.类图不管设计模式,reactor中的Add/Del/Process就是SelectDemultiplexer(此次只关注此多路分发器)中的 +AddHandler_:FD_SET把EventHandler::GetHandle()放入select监听集。(还有poll/epoll等) +DelHandler_:FD_CLR +ProcessHandlerapiselect 检测到rd/wr/err就调用 EventHandler::HandleRd EventHandler::HandleWr EventHandler::HandleErr 2.Srvdemo3.简结?obj:EventHandler 回调函数集 ?Reactor::AddHandler 先把obj::m_handle对应的EventHandler::HandleCBxx放入map[obj::m_handle]=obj:EventHandler::HandleCBxx,再把obj::m_handle放入监听集中(select/poll/epoll)。 ?Reactor::ProcessHandler 监听到了,找到对应的obj:EventHandler并执行。 ?扩展 在我们自己的app中,一个event对应一个fd。 fd0=open() fdn=open() 这样set/getevent就可以用reactor了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |