Reactor 模式

embedded/2024/12/23 2:15:01/

针对传统阻塞 I/O 服务模型的 2 个缺点,解决方案:

I/O 复用模型:多个连接共用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,无需阻塞等待所有连接。当某个连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理。

Reactor 对应的叫法: 1. 反应器模式 2. 分发者模式(Dispatcher) 3. 通知者模式(notifier)

基于线程池复用线程资源模式:不必再为每个连接创建线程,将连接完成后的业务处理任务分配给线程进行处理,一个线程可以处理多个连接的业务。

I/O 复用结合线程池,就是 Reactor 模式基本设计思想

Reactor 模式,通过一个或多个输入同时传递给服务处理器的模式,(基于事件驱动)

服务器端程序处理传入的多个请求,并将它们同步分派到相应的处理线程, 因此Reactor模式也叫 Dispatcher模式

Reactor 模式使用IO复用监听事件, 收到事件后,分发给某个线程(进程), 这点就是网络服务器高并发处理关键


http://www.ppmy.cn/embedded/59098.html

相关文章

如何在QGC中接收和处理无人机上传的各种传感器数据(如GPS、IMU等)。

在 QGroundControl (QGC) 中接收和处理无人机上传的各种传感器数据(如 GPS、IMU 等),主要通过 MAVLink 协议实现。MAVLink 是一种轻量级的消息传输协议,用于无人机和地面站之间的通信。QGC 通过 MAVLink 消息接收来自无人机的传感…

vue3 JS 调用 Android 原生方法

在Vue 3中调用Android原生方法通常涉及到WebView与原生代码的交互。你可以使用WebView的JavaScript接口来实现这一点。以下是一个简化的步骤和示例代码: 在Android端,创建一个类继承自WebView并实现JavaScriptInterface。在这个类中,定义一个…

[数仓]十、离线数仓(安全集群实战)

第1章 概述 Hadoop启用Kerberos安全认证之后,之前的非安全环境下的全流程调度脚本和即席查询引擎均会遇到认证问题,故需要对其进行改进。 第2章 数仓全流程 2.1 改动说明 此处统一将数仓的全部数据资源的所有者设为hive用户,全流程的每步操作均认证为hive用户。 2.2 改…

【从零开始实现stm32无刷电机FOC】【实践】【4/6 stm32高级定时器】

点击查看本文开源的完整FOC工程 在完成理论方面的准备后,是可以进行写代码实现了,但是stm32单片机提供了不少可以用于电机控制的硬件外设,充分利用这些硬件资源,可以减少代码量以及提高运行性能。 本文使用的stm32型号为喜闻乐见的…

Java之Java基础八(方法)

访问权限修饰符:常用的有public,private,protected,不写(为默认访问权限)需要有方法返回值类型,没有用void需要有方法名,在同一类中方法的签名不能重复(方法签名&#xf…

go 函数

函数 在 go 中,函数是一等公民。 In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. The…

php上传文件

$_FILES 作用&#xff1a;用来接收前端上传的文件&#xff0c;并且存储到服务器上。 前端 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

【vue】用vue实现拖拽/删除效果

这周接了个小外包&#xff0c;要求用vue实现如下图的拖拽效果 原理 mousedown监听鼠标按下&#xff0c;按下后开启mousemove mouseup监听器&#xff0c;并根据clientY offsetTop计算出元素新的top高度进行赋值&#xff0c;实现元素跟随。具体源码如下 <div title"d…