简要概括就是:
两者定义的针对目标不同,异步同步是针对响应本身的,阻塞非阻塞是针对请求本身的。
异步/同步: 指应答模式,同步表示必须等待结果返回,再进行下一步的动作。异步是指不需要等待结果,先去完成其他事务,结果返回后回调通知。
阻塞/非阻塞: 主要是针对调用者的,是指程序在等待结果时的状态。 阻塞是指调用线程会被挂起,不做什么别的事情。在得到结果之后才会返回。 非阻塞是指不能立即得到结果,当前线程不会被挂起,还可以做别的事情。
韩天峰关于此的一个回答: epoll
是同步,iocp
是异步,这种言论是把宏观和微观事务混为一谈了。按照这种说法,再深究下去到 CPU 指令的执行,都是同步的。使用 epoll
进行IO的事件触发回调,整个程序不存在 IO 的等待,就是异步程序。
参考连接: