Reactor与Proactor区别

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

Reactor: 基于同步IO

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

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

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

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

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

Proactor: 基于异步IO

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

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

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

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

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

原文地址:https://www.cnblogs.com/wanpengcoder/p/5340115.html