《深入淺出nodejs》非同步i o筆記(1)

2021-07-31 04:50:59 字數 856 閱讀 6265

阻塞i/o:

呼叫之後一定要等到系統核心層面完成所有的操作,呼叫才會結束。

eg: 讀取檔案----

核心在完成磁軌尋盤、讀取資料、複製資料到記憶體之後,呼叫才算結束。

非阻塞i/o:

呼叫之後立即返回。

① 作業系統將所有的輸入輸出裝置抽象為檔案。

② 進行檔案操作時,通過檔案描述符進行管理,檔案描述符類似於應用程式與系統核心之間的憑證。

③ 過程:

a:i/o呼叫----開啟檔案描述符

b:檔案描述符實現檔案的資料讀寫

非阻塞: 不帶資料直接返回,通過檔案描述符才能再次讀取資料

阻塞:   完成整個獲取資料過程。

c:非阻塞返回之後,cpu時間片繼續完成其他事務。

返回當前呼叫的狀態。

(非阻塞)

d: 通過輪詢重複呼叫i/o操作確認完成獲取完整資料

ps:輪詢

read

select  (1024長度)

poll    (鍊錶儲存,避免陣列長度的限制)

epoll   (linux i/o通知效率最高機制)

輪詢沒有檢查到事件,進入休眠

事件發生喚醒休眠

kqueue   freebsd系統下存在

非同步asynchronous: 無需等待呼叫函式方法/物件的返回值就返回繼續執行其他事務

同步synchronous : 與非同步相反

想了想,我覺得非同步比較巨集觀,對於系統來說,呼叫了這個方法,但是直接就可以返回算是非同步,比較像乙個概括者說需要非同步

非阻塞就比較細節,對於系統核心來說,如果一次性將i/o檔案讀取完畢就用到了阻塞,比如上面提到的那樣。

有想法請和我交流~ 謝謝。

《深入淺出nodejs》讀書筆記(2)

本來是想著學學node.js試試的,後來發現node.js才是真正的js啊,它裡面用到了很多我們平時沒用過的js特性,而且還非常優雅,比如它裡面的非同步程式設計思想,總之,深入淺出node.js 絕對值得一看。下面是我的讀書筆記。1.非同步io的優勢 a.從使用者體驗上來說,非同步io在這個資源的獲...

nodejs深入淺出讀書筆記 三

使用者體驗 資源分配 1.單執行緒同步程式設計會因i o導致硬體資源得不到更有的使用 2.多執行緒也會因為程式設計中的死鎖,狀態同步等問題讓人頭痛 nodejs給出的解決方案 1.利用單執行緒,原理多執行緒死鎖,狀態同步等問題 2.利用非同步i o讓單執行緒原理阻塞,更好的使用cpu 3.提供了類似...

node 《深入淺出nodejs》 讀書筆記

事件驅動是指在持續事務管理過程中,進行決策的一種策略,即跟隨當前時間點上出現的事件,調動可用資源,執行相關任務,使不斷出現的問題得以解決,防止事務堆積。訊息是乙個報告事件發生的通知,訊息驅動是圍繞訊息的產生與處理展開的,並依靠訊息迴圈機制來實現。非阻塞io 單執行緒 多執行緒 死鎖 web work...