tornado這個(gè)框架之前用過(guò)自赔,但是沒(méi)深入的看過(guò),今天仔細(xì)的看了看,比較了下這種異步非阻塞的模式忿晕。
首先是同步異步,阻塞非阻塞的比較:
1.同步和異步:主要關(guān)注消息通信機(jī)制(重點(diǎn)在B银受?)践盼。
同步:A調(diào)用B,B處理直到獲得結(jié)果宾巍,才返回給A咕幻。
異步:A調(diào)用B,B直接返回顶霞。無(wú)需等待結(jié)果肄程,B通過(guò)狀態(tài),通知等來(lái)通知A或回調(diào)函數(shù)來(lái)處理选浑。
2.阻塞和非阻塞:主要關(guān)注程序等待(重點(diǎn)在A蓝厌?)。
阻塞:A調(diào)用B鲜侥,A被掛起直到B返回結(jié)果給A褂始,A繼續(xù)執(zhí)行。
非阻塞:A調(diào)用B描函,A不會(huì)被掛起崎苗,A可以執(zhí)行其他操作(但可能A需要輪詢檢查B是否返回)狐粱。
3.同步阻塞:A調(diào)用B,A掛起胆数,B處理直到獲得結(jié)果肌蜻,返回給A,A繼續(xù)執(zhí)行必尼。
4.同步非阻塞:A調(diào)用B蒋搜,A繼續(xù)執(zhí)行,B處理直到獲得結(jié)果判莉,處理的同時(shí)A輪詢檢查B是否返回結(jié)果豆挽。
5.異步阻塞:異步阻塞 I/O 模型的典型流程 (select)。
6.異步非阻塞:A調(diào)用B券盅,B立即返回帮哈,A繼續(xù)執(zhí)行,B得到結(jié)果后通過(guò)狀態(tài)锰镀,通知等通知A或回調(diào)函數(shù)處理娘侍。
http://www.reibang.com/p/ef01c1386933
tornado新版利用gen.coroutine來(lái)進(jìn)行協(xié)程相關(guān)操作(yield)
@Asynchronous裝飾器只是聲明函數(shù)為可異步,需用callback來(lái)調(diào)用返回函數(shù)