c++ -reactor

1.reactor基本原理



      reactor网络模型
      1.组成:非阻塞io+io多路复用
      2.特征: 事件循环+事件驱动实现业务逻辑
  流程图:
c++ -reactor_第1张图片
   示例代码:

listenfd=socket()
bind(listenfd,add)
efd =epoll_create(0);
epoll_ctl(efd,epoll_ctl_add,listenfd,&ev);
while(1)
{
epoll_event ev[];
int nevents=epoll_wait(efd,ev,events,timeout);
for(int i=0;ifd==listenfd)
  {
  //建立连接的事件
  }
  else
  {
  if(e->events&epollin|epollhup){}
  if(e->events&epollout){}
  if(e->events&epollerr){}
  }
}
}

 

2.one loop per thread

     在reactor模型基础上,每监听到一个事件时创建一个线程。
 

3.redis 用reactor 而不是one loop per thread?
 

redis 是数据结构数据库。
1.v:string ,hash,set,zset,stream ,list
2.redis :存储数据的时候是变化的。
hash:<=512节点 压缩列表 >512 dict
zset: <=128 节点 压缩列表 >128 使用跳表
set :intset dict 存储

你可能感兴趣的:(c++ -reactor)