整理io中的同步异步,阻塞非阻塞概念

本文深入解析阻塞IO、非阻塞IO、同步IO与异步IO的概念及其差异,并通过实例说明IO复用技术如Select的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整理阻塞io,非阻塞io,同步io,异步io的相关概念

阻塞、非阻塞:表示可能出现的状态,得到结果前线程会不会阻塞。请求不能立即得到应答,需要等待,那就是阻塞;否则可以理解为非阻塞。
区别就在于: 数据拷贝的时候进程是否阻塞! 在下面看到Linux5中io模型分析就可以知道。
同步、异步:表示一种协作方式,是从全局更高的角度 “进程之间 合作的方式。指二个线程之间的交互方式。
                区别就在于: 应用程序的调用是否立即返回!                                                          

                                                                                                                                                   
5种IO模型在这里,就不复制粘贴了。 5种io模型     

IO复用,Select,pool理解


/O复用原理:让应用程序可以同时对多个I/O端口进行监控以判断其上的操作是否可以进行,达到时间复用的目的。在书上看到一个例子来解释I/O的原理,
我觉得很形象,如果用监控来自10根不同地方的水管(I/O端口)是否有水流到达(即是否可读),那么需要10个人(即10个线程或10处代码)来做这件事。
如果利用某种技术(比如摄像头)把这10根水管的状态情况统一传达到某一点,那么就只需要1个人在那个点进行监控就行了,而类似与select或epoll这样的
多路I/O复用机制就好比是摄像头的功能,它们能够把多个I/O端口的状况反馈到同一处,比如某个特定的文件描述符上,这样应用程序只需利用对应的select()
或epoll_wait()系统调用阻塞关注这一处即可。
就是一个select同时监控多个文件,应用程序阻塞在select上。

详细地址: io复用模型

还有知乎上一篇很好的文章: 阻塞非阻塞io

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值