当前位置: 首页 > news >正文

Reactor设计模式

一、Reactor设计模式

1、什么是Reactor设计模式?

Reactor模式是高性能I/O设计中,常用的设计模式。其中心思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上,一旦有I/O事件到来或是准备就绪,多路复用器将返回并将相应I/O事件分发到对应的处理器中。Reactor是一种事件驱动机制,和普通函数调用不同的是应用程序不是主动的调用某个API来完成处理,恰恰相反的是Reactor逆置了事件处理流程,应用程序需提供相应的接口并注册到Reactor上,如果有相应的事件发生,Reactor将主动调用应用程序注册的接口(回调函数)。

2、Reactor模式框架

Reactor模式由下面的几个组件组成:事件源、Reactor框架、多路复用机制和事件处理程序,Reactor模型UML,如下图:

在这里插入图片描述

  • 事件源:代表操作系统管理的资源(如:Linux文件描述符),例如:I/O事件,信号,定时器。
  • Reactor框架:事件管理者,提供事件注册、注销事件、事件循环以及当事件处于就绪状态,调用事件注册的回调等能力。对应到libevent中,就是event_base结构体。
  • 多路复用机制: 系统提供select、poll、epoll等I/O多路复用机制,libevent使用结构体eventop进行了封装,以统一的接口来支持这些I/O多路复用机制,达到了对外隐藏底层系统机制的目的。
  • 事件处理程序:负责事件的处理,对应到libevent中,就是event结构体。

3、Reactor模式的优点

响应快:不必为单个同步事件所阻塞,虽然Reactor本身依然是同步的(同步等待事件到来)
编程相对简单:可以最大程度的避免复杂的多线程及同步问题,并且避免了多线程/进程的切换开销
可扩展性:可以方便的通过增加Reactor实例个数来充分利用CPU资源
可复用性:reactor框架本身与具体事件处理逻辑无关,具有很高的复用性

http://www.lryc.cn/news/59907.html

相关文章:

  • 精通 TensorFlow 2.x 计算机视觉:第二部分
  • 《算法竞赛进阶指南》0x51 线性DP
  • spring数据库事务管理
  • Huggingface微调BART的代码示例:WMT16数据集训练新的标记进行翻译
  • synchronized 的 monitor 机制
  • NumPy 初学者指南中文第三版:1~5
  • ChatGLM-6B论文代码笔记
  • 机器学习入门实例-加州房价预测-1(数据准备与可视化)
  • 【ROS2指南-20】了解ROS2组件的用法
  • 使用AI进行“文本纠错”
  • 第九章 法律责任与法律制裁
  • 如何选择好用的海康视频恢复软件?综合考虑这几点
  • 前端学习:HTML颜色(什么是RGB、HEX、HSL)
  • zookeeper + kafka集群搭建详解
  • 【数据结构与算法】 - 双向链表 - 详细实现思路及代码
  • 面试官在线点评4份留学生简历! 这些坑你中了几个?如何写项目描述才能被大厂发面试?转专业简历该咋写 | 还有优秀简历展示!
  • 一觉醒后ChatGPT 被淘汰了
  • spring框架的事务
  • Spring配置数据源
  • 【前端之旅】Vue入门笔记
  • WPF教程(二)--Application WPF程序启动方式
  • snmp 自定义子代理mib库
  • 一文说透安全沙箱技术
  • Java多线程基础面试总结(二)
  • NS32F407VGT6 NS32F407VET6软硬件通用STM32F407VGT6 407VET6
  • Openstack: network: ovs: dpif/show 实例分析:interface
  • 必要的项目管理软件因素
  • 大学刚毕业,用10000小时,走进字节跳动拿了offer
  • docker 安装 redis
  • Ceph常见问题