看了一篇好文讲IO模型的,推荐一下
http://blog.csdn.net/historyasamirror/article/details/5778378
-
同步IO模型才区分 阻塞和非阻塞
阻塞-调用系统调用后等待其处理结束返回
非阻塞-调用系统调用后,若不满足当前需求直接返回,若满足需求则处理,处理之后返回,因此这种方式实际是需要轮询访问直至成功 -
除此之外,还有同步IO模型包括IO multiplexing
IO_multiplexing-与阻塞IO类似,只不过是被select阻塞,并且在select中可以判断资源的状态,其中一个好了则返回 -
异步IO与同步的最大的区别在于,完全不存在等待的阶段
异步IO-在调用系统调用后直接返回,不需要等待或者判断,资源预处理好后通过信号的方式告知,后进行处理。 -
借用上面那篇文章的比喻,挺有意思的~,A、B、C、D分别对应上述IO模型
有A,B,C,D四个人在钓鱼:
A用的是最老式的鱼竿,所以呢,得一直守着,等到鱼上钩了再拉杆;
B的鱼竿有个功能,能够显示是否有鱼上钩,所以呢,B就和旁边的MM聊天,隔会再看看有没有鱼上钩,有的话就迅速拉杆;
C用的鱼竿和B差不多,但他想了一个好办法,就是同时放好几根鱼竿,然后守在旁边,一旦有显示说鱼上钩了,它就将对应的鱼竿拉起来;
D是个有钱人,干脆雇了一个人帮他钓鱼,一旦那个人把鱼钓上来了,就给D发个短信。
网友评论