在实际应用中认识IO模型
2016-12-20 14:31
513 查看
不喜欢很多专业文章中用一堆术语去描述另一个术语,越简单的事物越美好。
谈到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是编程的基础啊,必须得要理解,后面会继续维护这些博客,增加相应代码来解释。
谈到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是编程的基础啊,必须得要理解,后面会继续维护这些博客,增加相应代码来解释。
相关文章推荐
- 毕业论文:白盒和黑盒测试技术在“手机信息管理系统模型”测试中的实际应用
- 网络IO工作模型以及在分布式中的应用
- Agile software development(敏捷开发)在实际项目中应用的一些认识
- IO模型详解及应用
- 认识IO模型
- 认识Jenkins,了解它在实际工作中的应用
- 事件模型、状态机在高性能网络IO中应用
- 盘点实际项目应用中的最佳机器学习模型
- Java IO (5) 漫谈IO实际应用
- [Perl]IO::Socket实际应用
- HttpUrlConnection与HttpClient的认识(六) -实际应用之刷网络流量
- 【原创翻译】认识MVC设计模式:web应用开发的基础(实际编码篇)
- 弹性盒模型的实际应用
- IEC61850变电站基本通信结构-原理和模型_4实际应用建模举例
- OSI七层协议模型,与实际应用
- HttpUrlConnection与HttpClient的认识(六) -实际应用之刷网络流量
- 应用 Rational 工具简化基于 J2EE 的项目第 3 部分 :转换到系统模型
- KMS Project 2 - 应用MS MSF团队模型
- 应用Rational 工具简化基于J2EE的项目 (三)转换到系统模型
- 应用 Rational 工具简化基于 J2EE 的项目第 3 部分 :转换到系统模型