分类: C/C++
2014-02-25 13:27:14
1.Reactor模式下说明你可以进行读写(收发)操作了。
2.Proactor模式下说明已经完成读写(收发)操作了,具体内容在给定缓冲区中,可以对这些内容进行其他操作了。
总结一下就是Reactor关注的是I/O操作的就绪事件,而Proactor关注的是I/O操作的完成事件
聪明的你一定会想到可以用Reactor实现Proactor。这是当然可以的,但是从严格意义上讲这是伪异步(感兴趣可以Google搜索 TProactor)。只有操作系统支持I/O异步(提供相应API例如windows下的IOCP)才能真正使用上异步I/O。据我了解windows 下的IOCP是异步的(我一般在windows下开发都首选IOCP)。而linux下的I/O异步接口有aio
(一种是glibc实现的 aio,是伪异步性能差比较烂。一种就是内核实现的aio,简称native aio)但是用的人很少好像Linux内核维护者不建议用。我至今看到的只有nginx在读文件时用到native aio。其实linux下的网络开发还是首选epoll(我在linux下开发一直使用epoll和libevent)。