学习中常遇到同步阻塞,同步非阻塞,异步阻塞等概念;且之间的概念很容易搞混.本次重温知识点后希望可以用通俗的解释说清楚.
先说说对概念的理解:
- 同步/异步:指事情能否不需要等待去做其他的.
- 阻塞/非阻塞:指事情处理有结果后能否立刻被处理
万物不离烧开水,这里也用烧开水来举例:
以下例子中:同步异步关注的是人的状态能不能在水热之前做别的,阻塞非阻塞关注水烧开是否立刻会被处理.
- 同步阻塞:烧开水,然后一直等着水开,其他啥事也不干
- 异步阻塞:烧开水,然后去做其他事,过段时间来看,如果水开了得到水,如果没开继续做其他的事;(这种情况下存在人刚看过之后水才烧开的情况,此时就需要等待下次看的时候才会处理,中间的这段时间就等于阻塞了)
- 同步非阻塞:烧开水,用响水壶,然后一直等着.(这个显的傻,应该不存在这种情况)
- 异步非阻塞:烧开水,用响水壶,然后去做其他事;不需要定时看水有没有开;壶什么时候响什么时候去处理;(这种情况下水开和处理热水是连续的不存在阻塞没人理的情况,所以是非阻塞)
再次对概念总结整理:
- 同步:发起请求后一直等待,有结果之前不管其他事
- 异步:发起请求后去做别的事
- 阻塞:请求执行后,需要主动获取状态(定时轮询或其他方式),在请求完成到主动获取到状态的这段时间就是阻塞的;例子就是:水可能烧开了但没人理
- 非阻塞:请求执行后,状态会自动获取到(回调或其他方式知晓状态,而不用主动轮询);例子是:水烧开就会响,人立刻就会处理.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)