reactor & proactor 笔记

1. 基本概念

  1.1 同步/异步,针对应用程序和内核交互而言。
    同步:进程触发IO操作等待或轮询查看IO操作是否完成;
    异步:进程触发IO操作后仅需自身的处理,IO操作完成后会得到通知(异步的特点)

  1.2 阻塞/非阻塞:针对进程访问数据
    阻塞:调用数据访问函数后一直等待
    非阻塞:调用数据访问函数后立即返回

  同步阻塞IO:传统的IO方式,进程发起一个IO操作后等待其完成;
  同步非阻塞IO:进程发起一个IO操作后返回做其他处理,但进程需要不断询问IO操作是否完成,如JAVA NIO
  异步阻塞IO:进程发起IO后等待内核通知,但仍然阻塞如select函数
  异步非阻塞IO:发起IO操作后立即返回,然后等待内核的IO操作通知,当前java无支持

  因此阻塞非阻塞本质上只针对同步有意义。

 

2. reactor & proactor
  2.1 reactor

    1. 注册就绪时间和关联的事件处理器;
    2. 事件分离器等待事件发生;
    3. 当发生读就绪事件时,事件分离器调用相应的时间处理器;

  2.2 proactor

    1. 等待事件
    2. 读数据,由proactor完成
    3. 把已经准备好的数据给用户处理函数(用户代码)
    4. 用户处理数据

备注:与reactor不同的是proactor关注的是读/写完成事件

posted @   Fredric_2013  阅读(193)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2013-05-09 linux 0.11 源码学习(十一)
点击右上角即可分享
微信分享提示