首页 > 其他 > 详细

五种IO模型

时间:2020-10-10 09:43:27      阅读:26      评论:0      收藏:0      [点我收藏+]

阻塞IO

用户线程阻塞在recvfrom调用上,等待内核把数据准备好并把数据拷贝到用户空间,再返回;

非阻塞IO

需要用户线程不断去询问内核数据是否准备好了;

IO复用

依然是阻塞的,阻塞在select操作上。

线程通过将一个或多个fd传递给select,阻塞在select操作上,select帮我们侦测多个fd是否准备就绪,当有fd准备就绪时,select返回数据可读状态,应用程序再调用recvfrom读取数据。

信号驱动IO

非阻塞,但是是同步的,即应用程序收到信号后,需要自己去调用recvfrom把数据从内核拷贝到用户空间。

异步IO

异步必然是非阻塞的,内核把数据准备好并拷贝到用户空间后,再通知用户程序去读数据;

参考这里有个写得很详细的文章

五种IO模型

原文:https://www.cnblogs.com/gitfong/p/13789651.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!