IO模式学习
问题
- 同步与异步,阻塞与非阻塞有什么区别,举例说明
- 什么是多路复用
问题引入
这是我们通常所写的程序
1 | def normal(): |
通常我们的输入需要等到上条输入结束之后才能进行,这也许是我们通常最想要得到的结果,但是有某些时候如果我们所需要的结果没有前后文影响的情况下,我们可能更希望它不是这么死板地来执行的,而是异步执行,最典型的一个例子就是访问网站,网站在进行渲染的时候用到了大量的IO操作,而其他用户不可能等到一个用户渲染完之后在进行渲染,否则会造成比较差的用户体验。
事实上,所有的IO操作(如数据库查询,读写文件等)都回造成阻塞,它们都会让我们无法利用到IO执行这一期间的计算机资源。
为了解决这个问题,计算机引入了一些IO模式的区别。