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. 通知线程读取数据完成,并已经存入提供的缓冲区中;

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

  • 相关阅读:
    原型模式
    哈希表原理
    Pow共识算法
    C++虚函数的工作原理
    TCP三次握手与四次分手
    TCP重置报文段及RST常见场景分析
    Ping、Traceroute工作原理
    ARP协议
    Rust生命周期bound用于泛型的引用
    Linux下core dump
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/5340115.html
Copyright © 2011-2022 走看看