提到js,可能就免不了單執行緒,事件機制,非阻塞i/o,非同步i/o等等,這些詞語。不能說理解的有多麼深刻,想談談自己的一些看法。node底層採用chrome v8 j**ascript搜尋引擎,其解析的速度快,效能穩定,提供了乙個良好的解析環境。這一節從非同步i/o機制來看看node自身的特點。以下是流程圖:
先來簡單敘述一下apache伺服器的工作方式,它會為每乙個請求開啟乙個執行緒,每乙個執行緒會消耗一定的記憶體,所以在記憶體有限的情況下,請求數量也會有限制。但是node採用非同步機制,事件驅動的方式實現了高併發請求。如上圖所示,在主線程裡是單執行緒的,只需要將包裝好的請求放進執行緒池中,不必等待資料完成即可繼續執行後面的**,不會阻塞主線程。執行緒池是多程序的,請求來到後,當執行緒可用便操作相應的i/o,將完成結果放入請求物件中並通知觀察者事件已經完成。這時候,事件會乙個乙個排好隊等待被執行。事件迴圈在程序啟動後已經開始,它通過詢問觀察者是否有事件執行從而呼叫相應的**函式。整個流程是如此,這樣雖然**是單執行緒的,但是整個過程其實是多執行緒在支援。這樣的話,即使是多個請求到來,內部機制也能有條不紊的進行。
node 非同步程式設計
我了解到的node非同步程式設計可分成 1.函式 2.pub sub模式 發布 訂閱模式 3.promise 4.generator 5.async await 一.直接 函式 該方法是最直接常用的非同步操作方式,比如在setinterval 和 ajax等會使用到,存在缺點有 1.不易閱讀並且容易...
同步IO和非同步IO
同步io和非同步io 簡單的說 同步在程式設計裡,一般是指某個io操作執行完後,才可以執行後面的操作。非同步則是,將某個操作給系統,主線程去忙別的事情,等核心完成操作後通知主線程非同步操作已經完成。i windows同步i o與非同步i o 執行後的效果如下 winxp sp2 vc6.0 4 心得...
同步IO和非同步IO
同步io和非同步io 有兩種型別的檔案io同步 同步檔案io和非同步檔案io。非同步檔案io也就是重疊io。在同步檔案io中,執行緒啟動乙個io操作然後就立即進入等待狀態,直到io操作完成後才醒來繼續執行。而 非同步檔案io方式中,執行緒傳送乙個io請求到核心,然後繼續處理其他的事情,核心完成io請...