Nodejs中的非同步到底是優勢還是劣勢?

時間 2021-05-31 04:45:25

1樓:zy445566

例子,比如實現curl功能,傳統來說就是等待請求返回的時候是CPU不斷的判斷是否請求返回。而nodejs來說既然請求始終是要一定的時間,那我就把你放到佇列裡面,等會再判斷是否返回。

那麼等待返回的時間裡,傳統做法是讓CPU就不斷地死迴圈判斷是否請求返回(這時就阻塞了,浪費大量沒必要的CPU資源),而nodejs就在這個等待過程做完其它事情再判斷,這就極大解放了CPU使用率。

解放了CPU但為什麼node的瓶頸又是CPU呢,其實原因也很簡單,就是node在設計之初就對非同步寫法是使用難度上進行了極大的折中,使得非同步非常簡單就能實現。

所以過於傻瓜化的非同步實現,必然會有傻瓜的CPU瓶頸。我相信在後續只要nodejs多執行緒設計者不SB,很容易就可以實現類似協程(像帶鎖功能估計懸)相結合,既能使用簡單,但又效能不差的nodejs。

2樓:Jim Liu

Node.js一直都標榜自己是non-blocking I/O,不標榜自己是Asynchronous I/O。

所以非同步I/O並不是說Node.js的特色,非阻塞才是。

那麼為什麼Node.js選擇用非同步I/O(這種程式設計模型)來表達非阻塞I/O呢,我認為,根本原因是,JS這門語言在那個時間點上沒有成熟的同步非阻塞體系,只有非同步非阻塞體系,這是沒的選的問題,不是選什麼的問題。

如果要我說非同步是優勢還是劣勢,那我當然覺得是劣勢,因為程式設計麻煩。所以當一部分人提前體會到async/await有多爽以後,都在紛紛號召快點進標準草案。畢竟俗話說,貓一旦嚐過魚腥就不會再肯吃別的。

3樓:Saviio

當然是優勢,ES6,7解決的是非同步語法上的缺陷。

之前的Nodejs有一套效率出色的IO模型,但卻沒有與之匹配的描述語法,新一代規範主要解決的是這個問題。

蘋果手機的優勢到底是什麼?

Luacccc 每一代都有不同的優勢那我來說下各代蘋果手機的優勢。1.iphone4 4s 除了好看,還是好看,4代的視網膜螢幕,A3晶元及500W後攝,更不用說4s雙核A5,使用壽命長到離譜。2.iphone5 5s3.iphone6 6s 弧形邊框更好握持,內建NFC加入光學防抖,6s記憶體翻倍...

研究生的優勢到底是什麼?

live2die 學歷機會專業技能 等等功利性的優勢 讀研的意義 總結自導師的雞湯 有一段時間把一件事嘗試到極限,探探自己的底。嘗試自己解決乙個問題從調研總結到創新推廣的全過程,以後遇到問題都不會不知所措。多數碩士研究生也只是在學術殿堂門口轉一轉,重要的是成為乙個problem solver。 國產...

DC中的小丑到底是誰?

曹潤 平行宇宙,這,很難回答吧,畢竟DC還在開發新的宇宙 但我可以告訴你乙個官方的,非常震驚的劇情,主世界,小丑有3個 至於是哪3個,大家還在猜 說個大膽的腦洞,新52中的小丑有那麼一絲可能性被洗白小丑是蝙蝠俠的宿敵亦或說是宿命,只看一點關於小丑的事蹟你可能發現不了小丑究竟追求的是什麼,但如果長篇看...