最通俗易懂的例⼦来解释什么是同步和异步
同步和异步的优缺点⽼张爱喝茶,废话不说,煮开⽔。
出场⼈物:⽼张,⽔壶两把(普通⽔壶,简称⽔壶;会响的⽔壶,简称响⽔壶)。
1 ⽼张把⽔壶放到⽕上,⽴等⽔开。(同步阻塞)
⽼张觉得⾃⼰有点傻
2 ⽼张把⽔壶放到⽕上,去客厅看电视,时不时去厨房看看⽔开没有。(同步⾮阻塞)
⽼张还是觉得⾃⼰有点傻,于是变⾼端了,买了把会响笛的那种⽔壶。⽔开之后,能⼤声发出嘀~~~~的噪⾳。
3 ⽼张把响⽔壶放到⽕上,⽴等⽔开。(异步阻塞)
⽼张觉得这样傻等意义不⼤
4 ⽼张把响⽔壶放到⽕上,去客厅看电视,⽔壶响之前不再去看它了,响了再去拿壶。(异步⾮阻塞)
⽼张觉得⾃⼰聪明了。
所谓同步异步,只是对于⽔壶⽽⾔。
普通⽔壶,同步;响⽔壶,异步。
虽然都能⼲活,但响⽔壶可以在⾃⼰完⼯之后,提⽰⽼张⽔开了。这是普通⽔壶所不能及的。
同步只能让调⽤者去轮询⾃⼰(情况2中),造成⽼张效率的低下。
所谓阻塞⾮阻塞,仅仅对于⽼张⽽⾔。
⽴等的⽼张,阻塞;看电视的⽼张,⾮阻塞。
情况1和情况3中⽼张就是阻塞的,媳妇喊他都不知道。虽然3中响⽔壶是异步的,可对于⽴等的⽼张没有太⼤的意义。所以⼀般异步是配合⾮阻塞使⽤的,这样才能发挥异步的效⽤。
——以上例⼦来源于⽹络,作者不明。
⽹友A个⼈理解:同步异步是对烧开⽔这个⾏为⽽⾔的,并不是⽔壶。⽼张烧开⽔⼀直等着开是同步,烧了开⽔就不管了直接去看电视就是异步。
⽹友B:同步就是烧开⽔,要⾃⼰来看开没开;异步就是⽔开了,然后⽔壶响了通知你⽔开了。阻塞是
烧开⽔的过程中,你不能⼲其他事情(即你被阻塞住了);⾮阻塞是烧开⽔的过程⾥可以⼲其他事情。同步与异步说的是你获得⽔开了的⽅式不同。阻塞与⾮阻塞说的是你得到结果之前能不能⼲其他事情。两组概念描述的是不同的内容。
⽹友C:个⼈觉得同步异步不是对⽔壶⽽⾔的,⽽是看⽔开了这个状态是⽼张主动去发现的还是⽔壶通知的。
同步是指:当程序1调⽤程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执⾏下去。
异步是指:当程序1调⽤程序2时,程序1径⾃继续⾃⼰的下⼀个动作,不受程序2的的影响。
同步是指:发送⽅发出数据后,等接收⽅发回响应以后才发下⼀个数据包的通讯⽅式。
异步是指:发送⽅发出数据后,不等接收⽅发回响应,接着发送下个数据包的通讯⽅式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论