zoukankan      html  css  js  c++  java
  • 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关注的是读/写完成事件

  • 相关阅读:
    Azure 3月新公布(二)
    亲,「广撒网」的营销方式你还没厌倦吗?
    Azure进阶攻略 | 下载还是在浏览器直接打开,MIME说了算!
    5步玩转Power BI Embedded,老司机全程带路解析
    手握不同媒体的数据,接下来该干些什么?
    cmake教程
    翻译Lanlet2
    pugixml 1.9 manual解读(部分)
    U盘无法拔出的解决办法
    Function Pointers in C
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/3719231.html
Copyright © 2011-2022 走看看