同步非同步和阻塞非阻塞
阿新 • • 發佈:2018-11-10
今天突然看到同步非同步和阻塞非阻塞的問題,一度陷入迷茫,經過我努力的汲取知識,在這裡說下我的理解。
同步非同步:可以理解成這是一種行為。
阻塞非阻塞:可以理解成這是一種狀態。
舉一個我看到的很不錯的例子:
《張大爺燒水》
話說張大爺有兩隻壺,一隻是普通的燒水壺,一隻是有響笛的壺。今天張大爺心情不錯,想泡茶喝。那還等什麼,燒水唄!
(同步阻塞):張大爺拿出了普通的燒水壺開始燒水,然後站在旁邊開始等待水燒開。
這時,張大爺的老伴來了,對張大爺說:你老糊塗了,在這等啥,一會過來看看水燒開沒有不就行了。
(同步非阻塞):於是張大爺看電視劇去了,時不時的過來瞧兩眼水燒開沒。
第二天,張大爺因為晚上睡了個好覺,又心情不錯。沒錯,接著燒水泡茶喝。但是呢,今天不用普通的壺了,今天用有響笛
的壺,放著也是放著,幹嘛不用!
(非同步阻塞):於是張大爺拿出了帶響笛的壺開始燒水,然後站在旁邊等壺的響笛聲,因為水開了,水壺就會響笛。
這時,張大爺的老伴又來了,對張大爺說:你咋不長記性呢,昨天剛說了你,你先去看會電視,等壺響笛不就行了。
(非同步非阻塞):於是張大爺又看電視去了,這次張大爺不用時不時的去看水燒沒燒開了,因為水燒開了水壺就會響笛。等響笛
了,張大爺就可以去泡茶啦。
個人理解:
同步:主動式的。(主動獲取結果)
非同步:被動式的。(被動等結果通知)
同步阻塞:一直等著,直到返回結果,期間啥都不幹。
同步非阻塞:先去幹點其他事,不時回來看看有沒有結果。
非同步阻塞:一直等著,有結果了通知我。
非同步非阻塞:先去幹點其他事,有結果了通知我。