本文主要是介绍儿子该如何找老子要钱------浅聊linux中的5种I/O模型并顺便说说异步和非阻塞的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
某儿子在上大学, 经济还不能独立, 经常向老子要钱。 有的时候, 儿子没有直接向老子要钱, 而是先嗅探式地问问老子是否有钱, 然后再伺机开口要, 也是蛮聪明的哈。
我们来看看, 儿子要钱的几种方式:
1. 如图:同步, 阻塞地要钱
儿子 = 用户进程
老子 = linux内核
要钱 = recv
2. 如图:同步, 非阻塞地要钱
儿子 = 用户进程
老子 = linux内核
要钱 = recv
妈的,还在准备 = EWouldBlock
3. 如图:同步, 刺探性地要钱
儿子 = 用户进程
老子 = linux内核
有钱吗?= select
要钱 = recv
4. 用得不多, 本文先不说。
5. 如图: 异步要钱
儿子 = 用户进程
老子 = linux内核
要钱 = aio_read
通知儿子拿到钱 = 发送消息, 触发回调函数
在linux中, 有5中I/O模型, 分别与上述五种要钱方式对应, 也即是:
1. 同步, 阻塞IO ------ 儿子要焦急等待老子准备钱, 焦急等待拿到钱
2. 同步, 非阻塞IO ------ 儿子立即知道是否有钱, 但要反复催要, 焦急等待拿到钱
3. 同步, 多路复用IO ------ 儿子要焦急等待老子准备钱, 焦急等待拿到钱
4. 同步, 信号驱动IO ------ 本文先不说
5. 异步IO ------ 儿子立即知道是否有钱, 也不用焦急等待拿到钱, 而是边泡妞, 边等待老子汇钱, 两全其美
好的, 先说到这里了, 想必大家对五种IO模型, 异步和非阻塞的区别有所了解了。 实际上, 在非阻塞模式中, 第一个过程是非阻塞的, 第二个过程是阻塞的, 所以, 总体体现为阻塞, 这就有点同步的感觉了。
本文就先扯淡到这里, 后续我们会进行更深入的分析, 到时再一起嗨
就这样。
这篇关于儿子该如何找老子要钱------浅聊linux中的5种I/O模型并顺便说说异步和非阻塞的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!