(以下文字只是个人在开发的感悟,如有不正确的地方请不吝指出)
异步IO就是把IO提交给系统,让系统替你做,做完了再用某种方式通知你(通过信号,或者其他异步方式
通知,这时候,操作系统已经帮你完成IO操作,具体来说就是你那个作为传入参数的的buffer的指针所指向
的空间已经读到了数据或者你的buffer的数据已经写出去了)
非阻塞IO就是你要通过某种方式不定时地向系统询问你是否可以开始做某个IO( 轮询啊 ),当可以开始
后,是要自己来完成IO(也就是说还要自己调用一次read来填充buffer或者write来不buffer的数据写出
去)
epoll和aio(这里的aio是指linux 2.6内核后提供的aio api)区别:
aio是异步非阻塞的。其实是aio是用线程池实现了异步IO。
epoll在这方面的定义上有点复杂,首先epoll的fd集里面每一个fd都是非阻塞的,但是epoll(还
select poll )在调用时阻塞等待fd可用,然后epoll只是一个异步通知机制,只是在fd可用时通知你,并
没有做任何IO操作,所以不是传统的异步。
参考资料:
阅读(1486) | 评论(0) | 转发(0) |