IO有5种模型:上次没有讲详细,这次好好学习一下
总的来说,计算机基础课程学的扎实,这些可能还没接触,但是学到了就能懂(一种计算机的思维?),基础课还是很重要的啊
- blocking IO:阻塞IO
- nonblocking IO:非阻塞IO,有的说法是非阻塞IO就是异步IO,但还是区分一下,因为是Linux的网络IO
- IO multiplexing:IO复用
- signal driven IO:信号驱动IO:比较少用,不讨论
- asynchronous IO:异步IO,效率最高
事件驱动模型:
当我们监听一个鼠标点击事件的时候,一般会想到两种办法:
- 创建一个线程循环检测是否有鼠标点击
- CPU资源浪费,可能鼠标点击的频率非常小,但是扫描线程还是会一直循环检测,这会造成很多的CPU资源浪费,如果扫描鼠标点击的接口是阻塞的呢
- 如果是堵塞的,又会出现下面这样的问题,如果我们不但要扫描鼠标点击,还要扫描键盘是否按下,由于扫描鼠标时被堵塞了,那么可能永远不会去扫描键盘
- 如果一个循环需要扫描的设备非常多,这又会引来响应时间的问题;
所以,该方式是非常不