同步与阻塞
作者:互联网
同步与异步
函数或方法被调用的时候
调用者能直接得到最终结果的是同步调用,
调用者不能直接得到最终结果的是异步调用。
以去餐厅吃饭为例,同步就是去点菜正好有一份做好的可以直接吃,异步就是饭还没做好。
阻塞与非阻塞
函数或方法被调用的时候
立即返回的是非阻塞调用
不能立即返回的就是阻塞调用
阻塞就是饭没好我就一直等着,非阻塞就是我取个号然后去买个彩票等饭好了我再去。
区别
- 同步、异步与阻塞、非阻塞不相关。
- 同步、非同步强调是否得到最终结果。
- 阻塞、非阻塞强调是否等待。
同步与异步的区别:
同步要一直执行到得到返回最终结果。
异步可以直接返回,但返回的不是最终结果。调用者以后可以通过被调用者提供的其它方式(被调用者通知调用者、调用者反复查询、回调(调用者先约定好最终结果要放在哪里,等最终结果出来了再去取))得到最终结果。
阻塞与非阻塞的区别:
调用者是否还可以干其它事。
阻塞只能一直等待最终结果,非阻塞在得到最终结果前可以干其它事。
联系
- 同步阻塞,我点好饭就啥也不干一直等着。
- 不常用 同步非阻塞,我点好饭,饭没好,我不等但是也没其它事,反复确认饭好没好。
- 不常用 异步阻塞,我点好饭,饭没好服务员说要取号,我取了号什么也不干就等着。
- 异步非阻塞,我点好饭,饭没好需要取号,取了号后我去隔壁买彩票了,饭好了叫我。(concurrent.futures)
标签:异步,同步,调用者,最终,阻塞,调用 来源: https://www.cnblogs.com/atlas-777/p/15706774.html