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

Reactor: 基于同步IO

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

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

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

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

 

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

 

Proactor: 基于异步IO

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

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

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

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

 

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

 

相关文章:

  • 2022-01-03
  • 2021-10-23
  • 2021-06-18
  • 2021-06-01
  • 2021-07-26
  • 2021-08-30
猜你喜欢
  • 2021-11-15
  • 2022-02-09
  • 2021-12-07
  • 2022-02-11
  • 2022-12-23
  • 2021-11-19
  • 2021-04-14
相关资源
相似解决方案