同步异步阻塞非阻塞的区别

同步异步阻塞非阻塞的区别

author: he xiaodong date: 2019-02-20

简要概括就是:

两者定义的针对目标不同,异步同步是针对响应本身的,阻塞非阻塞是针对请求本身的。

异步/同步: 指应答模式,同步表示必须等待结果返回,再进行下一步的动作。异步是指不需要等待结果,先去完成其他事务,结果返回后回调通知。

阻塞/非阻塞: 主要是针对调用者的,是指程序在等待结果时的状态。 阻塞是指调用线程会被挂起,不做什么别的事情。在得到结果之后才会返回。 非阻塞是指不能立即得到结果,当前线程不会被挂起,还可以做别的事情。

更详细的一个解答

韩天峰关于此的一个回答: epoll 是同步,iocp 是异步,这种言论是把宏观和微观事务混为一谈了。按照这种说法,再深究下去到 CPU 指令的执行,都是同步的。使用 epoll 进行IO的事件触发回调,整个程序不存在 IO 的等待,就是异步程序。

参考连接:

  1. 韩天峰文章
  2. 知乎问答
  3. yaocoder CSDN博客文章

顺带推荐 质量很高的课程, 欢迎扫码购买