常见的IO有以下几种:
磁盘io、网络io、标准输入输出
IO阻塞:例如在socket中,接收内核缓冲区内没有数据时,read将会处于阻塞状态,阻塞的程序将会被挂起。
第一种非阻塞io:不断轮询方式来判断内核缓冲区是否有数据。
第二种非阻塞io:当内核缓冲区存在数据时才会通知应用进程。
在下图中为客户端的程序。从标准输入读上数据,通过write将数据从网卡发送到服务器接收,夫区其发来的数据通过网卡传递到接收缓冲区,客户端来读取数据。fgets和read函数默认状态下都为阻塞状态,因此当fgets处于阻塞状态时,即使read对应的接收缓冲区有数据时,也不会读到。
IO复用将标准输入、输出、套接字等都看作IO的一路,无论哪一路有事件发生时都会通知应用程序取处理相应的事件。
IO的事件有以下几种:
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 阻塞IO和非阻塞IO【多路复用】
发表评论 取消回复