Reference: https://www.dre.vanderbilt.edu/~schmidt/PDF/Proactor.pdf
Proactor是常见的网络AIO模型。和Reactor的区别在于同步/异步。问题在于windows没有好的NIO,而Linux又没动力实现AIO,所以Reactor占多数。
与Reactor模式的对比见


连接

特殊的Handler名为Acceptor。Acceptor本身负责监听特定的端口(如80),用于创建socket连接。Acceptor特殊在Handler能够注册新的Handler。
注册AIO accept->accpet完成->回调处理create->注册AIO read
IO

已注册的AIO read->read完成->回调处理read文件->注册AIO write->write完成->响应
异步IO都是操作系统负责将数据读写到应用传递进来的缓冲区供应用程序操作。
异步明显比同步复杂很多,OS能够直接把数据从kernel buffer扔进用户buffer,而相比较而言,Reactor仅仅是获知数据准备好了,想要获取数据还需要再进行同步读取。
在性能上异步应该是有一定优势的,但是Linux直接用epoll模拟AIO,所以在Linux上做Proactor是多此一举,服务器依然以Reactor为主流。