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关注的是读/写完成事件

  • 相关阅读:
    [BZOJ]1854: [Scoi2010]游戏
    [BZOJ]3531: [Sdoi2014]旅行
    2017-3-30校内训练
    Codeforces Round #407 (Div. 1)
    [BZOJ]1064: [Noi2008]假面舞会
    Educational Codeforces Round 18
    [BZOJ]1503: [NOI2004]郁闷的出纳员
    [BZOJ]1758: [Wc2010]重建计划
    2017-3-26四校联考
    [BZOJ]4644: 经典傻逼题
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/3719231.html
Copyright © 2011-2022 走看看