zoukankan      html  css  js  c++  java
  • Reactor与Proactor区别

    如网络编程中accept之后等待数据到达,并且读取数据为例:

    Reactor: 基于同步IO

    1. 线程等待读取socket数据,将socketfd添加到事件分派器中,如添加到epoll;

    2. 事件分派器阻塞等待socketfd可读事件发生;

    3. 若数据到达,socketfd变成可读状态,事件分派器通知线程(或者回调)处理;

    4. 线程阻塞完成从socket读数据;

    --我要读,告诉你,你发现可以读的时候通知我,然后我去读;

    Proactor: 基于异步IO

    1. 线程等待读取socket数据,将存储数据的缓冲区和和读事件请求交给事件分派器;

    2. 事件分派器等待socket数据到达;

    3. 若数据到达,事件分派器不通知线程读取,而是直接完成数据的读取;

    4. 通知线程读取数据完成,并已经存入提供的缓冲区中;

    --我要读,告诉你,你帮我读好,再通知我;

  • 相关阅读:
    bloom filter
    【转】单实例
    Log Structured Merge Trees(LSM) 原理
    【转】南网成立始末
    变电站综合自动化系统
    bsp tree
    Private Bytes,Working Set,Virtual Size的区别
    kdtree
    asp.net下载文件几种方式
    C# FTP操作
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/5340115.html
Copyright © 2011-2022 走看看