其实关于这部分参考了很多文章,发现每个人的见解都是不一样的。
综合所学到的知识,进行了一些总结。
简单来说。
- 阻塞IO是等待设备可访问后再访问
- 非阻塞IO是查询设备是否可以访问
- 阻塞IO和非阻塞IO在一定程度上可以算作同步通知
- 异步通知:设备通知自身可以访问
看起来是有点点问题,不过从某种程度上理解其实并没有错。
再来一个版本
- 同步通知:不关心调用的过程是否发生阻塞,但是IO读写的时候会阻塞,可以说是当前的线程直接调用
- 异步通知:不关心调用的过程是否发生阻塞,等设备好了通知,可以说是通过其他线程调用(回调通知)
- 阻塞IO:关心调用过程,调用过程会发生阻塞,同时读写的时候也会发生阻塞,在没有完全接收到数据之前不会返回
- 非阻塞IO:调用后立即返回,调用过程中不会发生阻塞,但是读写IO是会发生阻塞
这么说呢,好像也半对不对。
- 阻塞和非阻塞IO区别:是否查询数据准备好了再去读取
- 同步和异步区别:是否通过当前线程进行调用
这就是我暂时的理解,后续有新的理解会更新....