編程是為了讓計(jì)算機(jī)完成任務(wù),并得到我們所要的結(jié)果啥容。
其中四個(gè)相關(guān)的非常重要的概念:同步棘钞、異步、阻塞干毅、非阻塞宜猜。
為了更好的理解這四個(gè)概念,用老張喝茶燒水來說明:
老張愛喝茶硝逢,要燒開水姨拥。
出場(chǎng)人物:老張绅喉,水壺兩把(普通水壺,簡(jiǎn)稱水壺叫乌;水燒開會(huì)響的水壺柴罐,簡(jiǎn)稱響水壺)。
1.老張把水壺放到火上憨奸,在旁邊等水開革屠。(同步阻塞)
老張覺得自己有點(diǎn)傻
2.老張把水壺放到火上,去客廳看電視排宰,時(shí)不時(shí)去廚房看看水開沒有似芝。(同步非阻塞)
老張還是覺得自己有點(diǎn)傻
,
于是想辦法板甘,買了把水燒開會(huì)響笛的那種水壺党瓮。水開之后,能大聲發(fā)出嘟嘟嘟~~~的噪音盐类。
3.老張把響水壺放到火上寞奸,在旁邊等水開。(異步阻塞)
老張覺得這樣傻等意義不大
4.老張把響水壺放到火上在跳,去客廳看電視枪萄,水壺響之前不再去看它了,響了再去拿壺猫妙。(異步非阻塞)
老張覺得自己聰明了
當(dāng)然瓷翻,選擇什么方式更合理,還是要看更多的條件:
- 如果CPU慢吐咳,任務(wù)時(shí)間長(zhǎng),(火小元践,水開要的時(shí)間長(zhǎng))韭脊,那么采用
異步非阻塞
的老張才是聰明的; - 如果CPU慢单旁,任務(wù)時(shí)間短沪羔,(假設(shè)只燒開一滴水),那么采用
同步阻塞
的老張才是聰明的象浑; - 如果CPU變快了蔫饰,原來任務(wù)時(shí)間長(zhǎng)的事情,現(xiàn)在任務(wù)時(shí)間很短愉豺,(假設(shè)火力變強(qiáng)篓吁,現(xiàn)在燒一壺水的時(shí)間跟原來燒一滴水的時(shí)間一樣了),那么也應(yīng)該采用
同步阻塞
蚪拦; - 如果CPU變快了杖剪,但是任務(wù)也加大了冻押,任務(wù)時(shí)間比原來更長(zhǎng)了,(假設(shè)火力變強(qiáng)盛嘿,現(xiàn)在要燒開大海的水)洛巢,那么只能用
異步非阻塞
。(否則等到死都還沒有結(jié)果)
雖然現(xiàn)在我們的CPU變快了次兆,但是我們的任務(wù)變得更難稿茉,因?yàn)槲覀冋幵谌蚧?shù)字化的新時(shí)代芥炭。
如果CPU是數(shù)量級(jí)增長(zhǎng)漓库,那么任務(wù)就是幾何級(jí)增長(zhǎng)。