这一块很长时间都没有理解透,究其原因是因为实际应用的时候么有想那么多原理性的东西,今天重新回顾了一下,也参考了其他大牛们的理解,记录一下自己的看法,增强一下记忆.
目录
同步
用户进程触发IO操作后进入等待或轮询的状态,直到IO操作进行.
比方说我去商场里上厕所,前面有人排队,我只能等着轮到我了再去方便.
异步
用户进程触发IO操作后就不管了,去干别的事情了,当IO操作就绪的时候给进程发个通知告诉他一声.
比方说我想买张火车票,在购票软件上点了抢票,当抢到火车票了购票软件会给我发条短信,我就可以去取票了.在此期间我并没有亲自去排队.
阻塞
进程读写时遇到暂时不能读写的情况时进入等待状态,直到有东西读写.
比方说我看一个视频,看到一半网卡了,我只能暂停等着缓冲出来.
非阻塞
进程读写暂时不可用时直接返回.
比方说我去找老板,走到一半秘书告诉我老板今天不在,我就直接回家了.
同步阻塞
服务器实现的方式是:一个连接一个线程.为每个连接开辟一个线程准备接受读写请求
就像是我们每个人面前都有一个锅,锅里全是肉,当我们饿了的时候在自己面前的锅里捞肉吃就行了,但是每人一口锅使得资源浪费,饿不饿都要有锅
同步非阻塞
服务器的实现方式是:一个请求一个线程,当有请求是开辟线程实现IO操作
就像是我们很多人在一个屋里,谁饿了说一下,就在你面前放下吃的,省去了每人一口锅的钱,但是需要有人专门在不停地问谁需要东西吃
异步阻塞
发起IO操作后不等待操作完成,操作完成后收到通知
异步非阻塞
发起IO操作后不等待操作完成直接返回,操作完成后收到通知
异步的只用记住通知就行,IO的具体实现交给操作系统完成, 用户进程只接收通知,就可以安排下一步的数据处理了
有什么问题或者意见的请给我留言,互相讨论提高,谢谢