加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Reactor

发布时间:2020-12-15 05:18:17 所属栏目:百科 来源:网络整理
导读:1.类图 不管设计模式, reactor 中的 Add/Del/Process 就是 SelectDemultiplexer( 此次只关注此多路分发器 ) 中的 +AddHandler_ : FD_SET 把 EventHandler::GetHandle() 放入 select 监听集。(还有poll/epoll等) +DelHandler_ : FD_CLR +ProcessHandler api

1.类图

不管设计模式,reactor中的Add/Del/Process就是SelectDemultiplexer(此次只关注此多路分发器)中的

+AddHandler_:FD_SETEventHandler::GetHandle()放入select监听集。(还有poll/epoll等)

+DelHandler_:FD_CLR

+ProcessHandlerapiselect

检测到rd/wr/err就调用

EventHandler::HandleRd

EventHandler::HandleWr

EventHandler::HandleErr

2.Srvdemo

3.简结

?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了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读