Reactor设计模式

news2025/6/17 19:55:05

一、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.coloradmin.cn/o/411887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 继承:概念定义、对象的赋值转换、继承作用域及派生类的默认成员函数

目录 一. 继承的概念和定义 1.1 继承的概念 1.2 继承的定义格式 1.3 继承关系和访问限定符 二. 基类和派生类对象的之间的赋值转换 三. 继承体系中的作用域 四. 派生类的默认成员函数 4.1 构造函数 4.2 拷贝构造函数 4.3 赋值运算符重载函数 4.4 析构函数 4.5 取地…

linux服务器禁止ping命令,linux服务器禁ping如何解除

linux服务器禁止ping命令,linux服务器禁ping如何解除 我是艾西,在我们搭建网站或做某些程序时,不少人会问禁ping是什么意思,怎么操作的对于业务有哪些好处等,今天艾西一次给你们说清楚。 禁PING的意思是:不…

相对全面的四足机器人驱动规划MATLAB和Simulink实现方式(足端摆线规划,Hopf-CPG,Kimura-CPG)

许久没更新四足机器人相关的博客文章,由于去年一整年都在干各种各样的~活,终于把硕士毕业论文给写好,才有点时间更新自己的所学和感悟。步态规划和足端规划只是为了在运动学层面获取四足机器人各关节的期望角位移和速度信号,再由底…

力扣---两数相加(c语言版)

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言初阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:记录一个力扣写了好久的一个问题 金句分享: ✨在心里种花,人…

uniapp 实现可滑动顶部选项卡(菜单)

利用和实现可滑动顶部选项卡,实现的切换效果类似下图这种(顶部tab下方swiper):(代码具体效果只是实现可滑动顶部选项卡的功能,具体样式可自定义修改) 一、分步骤展示 构建顶部tab选项按钮步骤…

00后卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了18k,对于工作都还没两年的我来说,还是比较满意的,毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王,感觉自己年轻&#xff…

[论文阅读笔记22]Identity-Quantity Harmonic Multi-Object Tracking

这是一篇优化匹配策略的文章, 通过密度估计的辅助, 估计一个边界框内有多少目标, 从而恢复遮挡的轨迹. 发表在IEEE TIP 2022. 论文地址: https://ieeexplore.ieee.org/abstract/document/9725267/ 0. Abstract 通常的MOT算法在匹配阶段时, 都是通过线性指派问题求解, 即会计算…

最近骗子有点多

就这几天,也就是这几天,我听到身边有两个人的家里人因为某某事情被骗。第一个是我旁边的同事,说是家里的老人被骗了好十几万,说是有一个高收益的旅行团,交钱了就免费旅游,旅游也是真去了,而且每…

一文弄懂访问者模式

关于设计模式,我们得结合生活中的案例来学习;最近我在网上也看了不少文章,今天想跟大家分享一下关于访问者模式的一些知识,先来看一个简单的案例吧。 相信大家都去过医院,看完病,医生都会给我们开一个处方…

数据结构:算法的时间复杂度和空间复杂度

Hello各位老铁们!我们又见面了,大家最近有没有坚持学习和敲代码呢?在这里小编就要督促一下大家了,我们每一天都敲一两道题,这样子久而久之的坚持下去你就会发现你已经在不知不觉的过程中变成了一个大佬。敲代码使我们快…

unity蒙板测试例子——传送门

返回目录 Unity蒙板测试例子——传送门一、例子介绍 大家好,我是阿赵。 蒙板测试(Stencil Test)是渲染管线的合并输出环节里面的一种测试,和透明度测试或者深度测试一样,它实际上也是控制颜色值是否应该显示出来的一种…

natapp + nginx 实现内网穿透

环境是我本地的win10 第一步:下载nginx压缩包并解压(这个自行百度吧) 第二步: 修改nginx的配置文件: 在最下方添加: #testserver {listen 8081;#你要映射的端口server_name localhost; #使用本地IPlocation / {proxy_pass…

面试官:如何搭建Prometheus和Grafana对业务指标进行监控?

Prometheus和Grafana都是非常流行的开源监控工具,可以协同使用来实现对各种应用程序、系统、网络和服务器等的监视和分析。 下面对Prometheus和Grafana进行简要介绍: Prometheus Prometheus是一款开源、云原生的系统和服务监控工具,它采用p…

戴尔惠普联想笔记本性价比(戴尔和联想笔记本性价比)

联想。 联想做笔记本时间长,售后、质量都不错,追求稳定,性价比合理,长久使用考虑,不会有太大笔记本毛病。 联想1984就开始进入笔记本电脑行业,由中科院投资,后来收购了IBM之后,笔记…

第13届蓝桥杯省赛真题剖析-2022年4月17日Scratch编程初中级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第122讲。 第13届蓝桥杯省赛举办了两次,这是2022年4月17日举行的第一次省赛,比赛仍然采取线上形…

Air32F103CBT6|CCT6|KEIL-uVsion5|本地编译|STClink|(6)、Air32F103编译下载

目录 一、环境搭建 准备工作 安装支持包 二、新建工程 添加外设库支持 测试代码 三、下载烧录 一、环境搭建 准备工作 安装MDK5,具体方法请百度,安装后需要激活才能编译大文件 下载安装AIR32F103的SDK:luatos-soc-air32f103: Air32f…

FL Studio2023中文版本水果编曲工具

编曲、剪辑、录音、混音,23余年的技术积淀和实力研发,FL Studio 已经从电音领域破圈,成功蜕变为全球瞩目的全能DAW,把电脑变成全功能音乐工作室,接下来我们会为您一一展示FL Studio 21也叫做水果音乐编曲软件&#xff…

Chat GPT太强,多种玩法曝光

1、模拟面试、考试,备考等,以面试为例,让它扮演一个角色 先让它扮演互联网行业的商业分析师 2、写各种发言稿、文章、报告,给它你的明确要求和目标,以发言稿为例,输入继续,可以持续优化 3、…

报名截至在即 | “泰迪杯”挑战赛最后一场赛前指导直播!

为推广我国高校数据挖掘实践教学,培养学生数据挖掘的应用和创新能力,增加校企交流合作和信息共享,提升我国高校的教学质量和企业的竞争能力,第十一届“泰迪杯”数据挖掘挑战赛(以下简称挑战赛)已于2023年3月…

白银实时行情操作中的一些错误及其解决办法(下)

小编根据大师,网络上的高手以及自己的经验整理出的一些交易中典型的错误,投资者可以参考参考,有则改之无则加勉~续上文…… 问题三:长线获利的交易不容易坚持同时陷入盘整或亏损的交易(特别是大仓持有的品种&#xff…