使用c++简单实现reactor模式
来源:互联网 发布:子域名备案 编辑:程序博客网 时间:2024/06/05 05:52
转载地址:http://blog.csdn.net/baidu20008/article/details/41378761
事件驱动模型广泛地应用于高性能的web服务器中。而相对应的事件处理模式,最为典型的就是Reactor模式(中文可以称作“反应器” “反应堆”等等,各种叫法都不一样,估且就使用英文吧,叫它Reactor模式)和Proactor模式(中文也称“主动器” “前摄器”,同前者一样称其为Proactor模式)。其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。
在各种书籍上,能够见到的Reactor的类设计像下面这样:
或是添加定时器,增加定时实现任务的功能,就像这样:
本文实现一种相当简单的Reactor,除了对于正常IO事件的处理外,它还采用了最小堆实现的定时器实现定时完成任务的功能。具体类关系设计如下(为了方便起见,我们省略了成员函数和成员变量):
源码链接:https://github.com/song0071000/Reactor_Implemention 欢迎fork and pull request
考虑到链接的某个特定一方只会存在一个Reactor的特性而引入singleton模式,放弃直接使用全局变量的方式。这里将事件IO多路复用做成一个基类的形式,当需要时可以派生出自己所需要的IO多路复用器,比如select kqueue等等。
以下是运行结果:
Server:
Client:
ACE框架已经提供了Reactor和Proactor的支持,我觉得完全没有必要重复造轮子。这里只是为了去了解Reactor模式而简单的实现Reactor。该实现是在wuzesheng的Reactor实现基础之上的,链接如下:http://www.wuzesheng.com/?p=1624
在如下的链接中,你能够找到更多关于Reactor的知识。
http://taohui.org.cn/tcpperf6.html
http://my.oschina.net/JJREN/blog/51966
本人享有博客文章的版权,转载请标明出处http://blog.csdn.net/baidu20008- 使用c++简单实现reactor模式
- 使用c++简单实现reactor模式
- Reactor 模式的简单实现
- Reactor模式简单实现与理解
- epoll实现Reactor模式
- reactor模式C++实现
- 【muduo库学习】实现最简单的reactor模式
- POCO实现的reactor模式
- 简单的ACE反应器(Reactor)模式服务器
- Reactor模式 - @ libevent by c【转载内容】
- muduo的reactor模式基本实现
- 使用Reactor框架的简单udp服务器
- NIO使用Reactor模式遇到的问题
- ACE之Reactor模式使用实例
- Reactor模式
- Reactor模式
- Reactor模式
- Reactor模式
- 2016年7月19日开发android遇到的几个问题
- 为View设置边框阴影效果
- Web 前端开发规范文档
- 一个计算集群的设计
- Quartz定时器错误信息,java.lang.NoSuchMethodError: org.quartz.SchedulerException
- 使用c++简单实现reactor模式
- Android Sample ActivitySceneTransitionBasic 阅读笔记
- Java 开发之Spring MVC(一)
- 三、vivado硬件调试
- session共享问题
- div怎么撑开外面的div让高度自适应
- P12文件解析
- Opencv MAT类
- [Cloud Computing]Mechanisms: Public Key Infrastructure