同步异步和阻塞是个有关联,但有有区别的东西。很多时候会从直觉上认为 : 同步 = 阻塞, 异步 = 非阻塞。
但实际上他们是完全描述的不同的东西:
同步异步是从request –> Receive Result这个过程的不同来讲的。
而阻塞是指在等待Request结果时,线程是否会挂起。
对于一个IO过程,可能是同步异步中的一种,同时也必然是阻塞或非阻塞。他们正交的结果共有4种:
1. 同步阻塞
request –> block –> return result
即同步调用后,当函数返回时就能得到IO的结果。
举个例子:小明去图书馆查文献(request),管理员让小明稍等,然后去系统帮小明查(阻塞,可能几分钟查到了,可能要1天才能查到),管理员查到后告诉小明(return result)。这管理员告诉小明结果之前,小明得一直等在哪里,啥也干不了,哪怕是一天。
所以这种模式最大的问题时浪费小明时间,等待特别无聊。

订阅专栏 解锁全文
2995

被折叠的 条评论
为什么被折叠?



