编程是为了让计算机完成任务,并得到我们所要的结果。
其中四个相关的非常重要的概念:同步、异步、阻塞、非阻塞。
为了更好的理解这四个概念,用老张喝茶烧水来说明:
老张爱喝茶,要烧开水。
出场人物:老张,水壶两把(普通水壶,简称水壶;水烧开会响的水壶,简称响水壶)。
1.老张把水壶放到火上,在旁边等水开。(同步阻塞)
老张觉得自己有点傻
2.老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻
,
于是想办法,买了把水烧开会响笛的那种水壶。水开之后,能大声发出嘟嘟嘟~~~的噪音。
3.老张把响水壶放到火上,在旁边等水开。(异步阻塞)
老张觉得这样傻等意义不大
4.老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了
当然,选择什么方式更合理,还是要看更多的条件:
- 如果CPU慢,任务时间长,(火小,水开要的时间长),那么采用
异步非阻塞
的老张才是聪明的; - 如果CPU慢,任务时间短,(假设只烧开一滴水),那么采用
同步阻塞
的老张才是聪明的; - 如果CPU变快了,原来任务时间长的事情,现在任务时间很短,(假设火力变强,现在烧一壶水的时间跟原来烧一滴水的时间一样了),那么也应该采用
同步阻塞
; - 如果CPU变快了,但是任务也加大了,任务时间比原来更长了,(假设火力变强,现在要烧开大海的水),那么只能用
异步非阻塞
。(否则等到死都还没有结果)
虽然现在我们的CPU变快了,但是我们的任务变得更难,因为我们正处在全球化、数字化的新时代。
如果CPU是数量级增长,那么任务就是几何级增长。
网友评论