異步與同步關(guān)注的是信息接收方的行為邑商。
所謂同步摄咆,就是在調(diào)用一個函數(shù)后凡蚜,直到計算獲得函數(shù)結(jié)果,該函數(shù)才執(zhí)行完畢吭从。
比方說cld來到菜市場買烤雞朝蜘。烤雞要現(xiàn)殺現(xiàn)烤影锈,cld需要等烤雞做好拿走芹务,買烤雞這件事才算完成。
所謂異步鸭廷,就是在調(diào)用一個函數(shù)后枣抱,該函數(shù)立刻執(zhí)行完畢,函數(shù)結(jié)果計算完成后辆床,該函數(shù)會主動通知調(diào)用者佳晶。
比方說cld來到菜市場買烤雞∷显兀烤雞要現(xiàn)殺現(xiàn)烤轿秧,cld說"老板我要趕緊回家陪我男朋友。我給你留個地址咨堤,你做好送到我家好嗎"菇篡。然后cld就回家了。盡管烤雞還沒做好一喘,但cld已經(jīng)完成了買烤雞這件事驱还。而烤雞會由老板稍后送到家里來。
再舉兩個例子凸克。
函數(shù)的異步調(diào)用
setTimeout()函數(shù)被異步調(diào)用了;setTime()函數(shù)執(zhí)行完畢后议蟆,才開始執(zhí)行cb().
函數(shù)的同步調(diào)用
GetInt()獲取用戶輸入的i后才算執(zhí)行完畢.
阻塞/非阻塞關(guān)注的是信息發(fā)送方的狀態(tài)。
阻塞是指得到結(jié)果之前萎战,當前線程會被掛起咐容。
比方說cld來到菜市場買烤雞。在得到烤雞(無論是否讓老板把烤雞送到家里)之前蚂维,cld什么事情都不做戳粒,就直到獲得烤雞才做其他事情。(好像不太像cld的性格...)
非阻塞指在得到結(jié)果之前虫啥,當前線程不會掛起享郊。