linux i/o 模式备忘

由于看了网上一篇文章很好,特此备忘:

http://www.cnblogs.com/hustcat/archive/2009/09/18/1569661.html

其中,对异步阻塞机制,以read/poll 函数为例,其实际上是 等待事件通知。

调用者仍然会被poll调用阻塞住,停止在poll那个地方。

所谓异步,说的是 可以有很多I/O在工作,有了结果会通知调用者,此时poll获得结果。

用生活中的例子来看:

同步阻塞:一个人早上起来去遛狗,一旦开遛,就一直到结束。

同步非阻塞:比如你去发传真,你发了就发了,不用等待对方回应。

                  再比如你去麦当劳买快餐,你发现人多就决定不买了,
                  或者你过半小时来一趟,到柜台看看能不能买你要的套餐,或者你买套餐付了钱,间隔一段时间看看好了没有。

异步阻塞: 比如你和你的同事分别在淘宝、当当等订了一些货物,
                你知道每天下午1点本地一家货运公司(比如发到暴货运有限公司)为 淘宝、当当、京东一起送货,这就是IO多路复用了。

                订了货物以后,你每天上班的流程是:开会、干活、发呆、聊天打屁,吃中午饭,这就是异步。

                然后因为着急,你就下午1点到1点半公司门外等着看发到暴货运的车来了没有,如果有就上前收货。这段时间你阻塞了。

                1点半之后你又回去上班,又是异步。

异步非阻塞:这是所谓AIO,为了提高效率,你在订货的时候给商家留了电话号码。然后你就干自己的工作。这是异步。

                  当发到暴货运的货物到了,他们发现有你的货,就会给你打电话。
                  你此时放下手头工作来收货。收完货再回去工作。这是非阻塞。

posted @ 2012-10-11 13:52  健哥的数据花园  阅读(235)  评论(0编辑  收藏  举报