个人网站支付解决方案,化妆品网页设计图片,惠州市建网站公司,wordpress仅搜索标题Proactor 具体流程如下#xff1a;
处理器发起异步操作#xff0c;并关注 IO 完成事件#xff1b;事件分离器等待操作完成事件#xff1b;分离器等待过程中#xff0c;内核并行执行实际的 IO 操作#xff0c;并将结果存储入用户自定义的缓冲区#xff0c;最后通知事件分…Proactor 具体流程如下
处理器发起异步操作并关注 IO 完成事件事件分离器等待操作完成事件分离器等待过程中内核并行执行实际的 IO 操作并将结果存储入用户自定义的缓冲区最后通知事件分离器读操作完成IO 完成后通过事件分离器呼唤处理器事件处理器处理用户自定义的缓冲区中的数据
Proactor 的所有 IO 操作都交给系统提供的异步 IO 接口去执行。工作线程值负责业务逻辑。在 Proactor 中用户函数启动一个异步的文件操作。同时将这个操作注册到多路复用器上。多路复用器并不关心文件是否可读或可写而是关系这个异步读操作是否完成步操作是操作系统完成用户程序不需要关心。多路复用器等待直到有完成通知到来。当操 作系统完成了读文件操作将读到的数据复制到了用户先前提供的缓冲区之后通知多路 复用器相关操作已完成。多路复用器再调用相应的处理程序处理数据。
Reactor Reactor 模式是处理并发 IO 必将常见的一种模式用于同步 IO中心思想是将所有要处理的 IO 事件都注册到一个中心 IO 多路复用器上同时主线程/进程阻塞在多路复用器上一旦有 IO 事件到来回事准备就绪多路复用器返回并将事先注册的相应 IO 事件分发到对应的处理器中。
Reactor 模型有三个重要组件
多路复用器由操作系统提供事件分发器将多路复用器中返回的就绪事件分到对应的处理函数中事件处理器负责处理特定事件的处理函数。 具体流程如下
注册读就绪事件和相应的时间处理器事件分离器等待事件事件到来激活分离器分离器调用事件对应的处理器事件处理器完成实际读操作处理读到的数据注册新事件然后返还控制权。
Reactor 模式是编写高性能网络服务器的必备技术之一它具有如下的优点
响应快不必为单个同步时间所阻塞虽然 Reactor 本身依然是同步的编程相对简单可以最大程度的避免复杂的多线程及同步问题并且避免了多线程/进 程的切换开销可扩展性可以方便的通过增加 Reactor 实例个数来充分利用 CPU 资源可复用性reactor 框架本身与具体事件处理逻辑无关具有很高的复用性
在 Reactor 模式中一个单独的线程通常称为主循环或事件循环负责处理所有的输入输出事件并通过事件分发器将这些事件分派给相应的处理器。由于只有一个线程负责处理所有事件因此在多核系统上使用 Reactor 模式可能会面临以下挑战
线程同步问题在多核系统上不同的 CPU 核心可以同时执行不同的线程。当多个线程同时访问共享数据时需要进行适当的同步机制来保证数据的一致性和避免竞态条件。线程间切换开销在多核系统上如果使用 Reactor 模式实现时每个连接都对应一个线程则可能会创建大量的线程。线程之间频繁地切换会引入额外的开销并可能导致系调度和负载均衡在多核系统上使用 Reactor 模式时需要考虑如何合理地分配任务给各个 CPU 核心以达到负载均衡。否则某些 CPU 核心可能会过载而其他核心处于闲置状态。 推荐课程https://xxetb.xetslk.com/s/3oyV5o