五种IO模型
2017-07-20 11:21
771 查看
五种IO模型
(1)阻塞IO
(2)非阻塞IO
(3)信号驱动
(4)IO多路复用
(5)异步IO
IO分两步
(1)等待数据
(2)数据搬迁
阻塞IO
在数据准备好前,什么事情都不做,阻塞在那里一直等待
非阻塞IO
需要不停的轮询,询问数据是否准备好
IO多路转接(最高效的IO)
设置select/poll/epoll函数去等待,当有事件就绪的时候,才去调用读函数去读事件,完成数据拷贝
异步IO
应用程序自己不去处理,他调用函数以后就立即返回,当内核将数据准备好了以后,进行数据拷贝等一系列工作了以后,通过指定信号去告诉应用程序你交代的事件我已经为你处理好了
同步IO和异步IO的区别
同步IO是数据等待和数据搬迁都是自己去做。
异步IO是数据等待和数据搬迁都不是自己去做。
阻塞IO和非阻塞IO的区别
阻塞IO在数据没有准备就绪的时候,什么事情也不做,一直在等待时间就绪,一旦数据就绪了以后,他才会将数据从内核拷贝到应用程序
非阻塞IO在数据没有准备就绪的时候,就立即返回,并且在没有获得数据的过程中隔一段时间就去询问数据是否准备就绪,直到数据准备就绪。
(1)阻塞IO
(2)非阻塞IO
(3)信号驱动
(4)IO多路复用
(5)异步IO
IO分两步
(1)等待数据
(2)数据搬迁
阻塞IO
在数据准备好前,什么事情都不做,阻塞在那里一直等待
非阻塞IO
需要不停的轮询,询问数据是否准备好
IO多路转接(最高效的IO)
设置select/poll/epoll函数去等待,当有事件就绪的时候,才去调用读函数去读事件,完成数据拷贝
异步IO
应用程序自己不去处理,他调用函数以后就立即返回,当内核将数据准备好了以后,进行数据拷贝等一系列工作了以后,通过指定信号去告诉应用程序你交代的事件我已经为你处理好了
同步IO和异步IO的区别
同步IO是数据等待和数据搬迁都是自己去做。
异步IO是数据等待和数据搬迁都不是自己去做。
阻塞IO和非阻塞IO的区别
阻塞IO在数据没有准备就绪的时候,什么事情也不做,一直在等待时间就绪,一旦数据就绪了以后,他才会将数据从内核拷贝到应用程序
非阻塞IO在数据没有准备就绪的时候,就立即返回,并且在没有获得数据的过程中隔一段时间就去询问数据是否准备就绪,直到数据准备就绪。
相关文章推荐