您的位置:首页 > 其它

在实际应用中认识IO模型

2016-12-20 14:31 459 查看
不喜欢很多专业文章中用一堆术语去描述另一个术语,越简单的事物越美好。

谈到IO模型,常见的IO模型大概有5种。

1.阻塞IO

2.非阻塞IO

3.多路复用IO

4.信号驱动IO

5.异步IO

1)阻塞IO

所谓阻塞,是指当前线程被挂起了。也就是说,在执行这个IO操作的时候,在操作返回结果前,当前线程交出了cpu的控制权(这个控制权应该是交给了操作系统内核,内核执行完后,会把cpu还给该线程)。

2)非阻塞IO

非阻塞,表明当前线程没有被挂起,这种方式只是告诉操作系统内核去执行一个IO操作,然后当前线程该干嘛干嘛。当需要知道IO操作的结果的时候,可以去“问”内核之前让你办的事办的怎么样了。

3)多路复用IO

多路复用其实是非阻塞IO模型的扩展。这么讲吧,领导安排了10个任务给下面基层员工,然后让秘书去盯着这10个员工的任务的执行情况(这里秘书是同步的,不干别的事了,就专门等结果咯),谁有结果了就汇报给领导,这样领导就实现了一个人能够管理好10个任务了,其实是把秘书复用了。

4)信号驱动IO

如果说多路复用IO是领导在得到秘书的反馈后主动去执行某些操作的话,那么信号驱动IO就是领导收到IO操作完成的信号后去做应该做的事。

5)异步IO

字面意思就是在执行IO操作的 时候,线程没有阻塞。这里跟非阻塞的概念非常像。区别在于异步IO机制会有相应的信号、状态、回调之类的反馈机制,而非阻塞仅仅是当前操作没有阻塞线程罢了。

IO是编程的基础啊,必须得要理解,后面会继续维护这些博客,增加相应代码来解释。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: