原文:淺析libuv源碼-node事件輪詢解析(3)

好像博客有觀眾,那每一篇都畫個圖吧 本節簡圖如下。 上一篇其實啥也沒講,不過node本身就是這么復雜,走流程就要走全套。就像曾經看webpack源碼,讀了 行代碼最后就為了取package.json里面的main屬性,導致我直接棄坑了,垃圾源碼看完對腦子沒一點好處。回頭看了我之前那篇博客,同步那塊講的還像回事,異步就慘不忍睹了。不過講道理,異步中涉及鎖 底層操作系統API iocp 的部分我到現 ...

2019-05-10 19:13 0 466 推薦指數:

查看詳情

淺析libuv源碼-node事件輪詢解析(1)

  好久沒寫東西了,過了一段咸魚生活,無意中想起了脈脈上面一句話: 始終保持自己的競爭力。所以,繼續開寫!   一般的JavaScript源碼看的已經沒啥意思了,我也不會寫什么xx入門新手教程,最終決定還是啃原來的硬骨頭,從外層libuv => node => v8一步步實現原有 ...

Tue May 07 04:30:00 CST 2019 2 421
淺析libuv源碼-編譯啟動

  面試的間隙回頭復習了一下node,感覺node就像一個膠帶,把V8和libuv粘在了一起。   V8毫無疑問,負責解析執行JavaScript,相當於語言層面的橋梁;而libuv則是負責操作系統底層功能的封裝,例如基於IOCP的event loop、file system ...

Wed Nov 28 10:45:00 CST 2018 0 858
淺析libuv源碼-獲取精確時間

  在Timer模塊中有提到,libuv控制着延遲事件的觸發,那么必須想辦法精確控制時間。   如果是JS,獲取當前時間可以直接通過Date.now()得到一個時間戳,然后將兩段時間戳相減得到時間差。一般情況下當然沒有問題,但是這個方法並不保險,因為本地計算機時間可以修改。   libuv顯然 ...

Fri Dec 07 11:04:00 CST 2018 0 1089
輪詢與長輪詢 淺析

輪詢:說白了就是客戶端定時去請求服務端, 是客戶端主動請求來促使數據更新; 長輪詢:說白了 也是客戶端請求服務端,但是服務端並不是即時返回,而是當有內容更新的時候才返回內容給客戶端,從流程上講,可以理解為服務器向客戶端推送內容; 從中大家可以看出區別: 輪詢: 1:大量耗費 ...

Sat Aug 12 00:32:00 CST 2017 1 2148
Nodejs事件引擎libuv源碼剖析之:高效隊列(queue)的實現

聲明:本文為原創博文,轉載請注明出處。 在libuv中,有一個只使用簡單的宏封裝成的高效隊列(queue),現在我們就來看一下它是怎么實現的。 首先,看一下queue中最基本的幾個宏: 首先,QUEUE被聲明成一個"具有兩個char*元素 ...

Thu Nov 10 22:14:00 CST 2016 2 5208
libuv事件循環

目錄 1、說明 2、數據類型 2.1、uv_loop_t 2.2、uv_walk_cb 3、API 3.1、uv_loo ...

Wed Feb 03 19:30:00 CST 2021 0 514
libuv源碼分析(1)

libuv我在今年四月份的時候開始接觸,一開始也遇到了很多坑,但后來理解並遵守了它的設計思想,一切就變得很方便。這幾天開始着手精讀它的源碼,本着記錄自己的學習痕跡,也希望能增加別人搜索相關問題結果數的目的,因此就有了這些東西,這個系列至少會有四篇,后續再說吧。 那么它是什么,一個高效輕量的跨平台 ...

Sat Jul 16 10:47:00 CST 2016 1 8182
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM