在liangzhiyang/annotate-grpc-go基礎上補充了部分注釋
http/2 流量控制的目標,在流量視窗初始值的約束下,給予接收端以全權,控制當下想要接受的流量大小。
// 用於傳送流控。 將當前可用的quota(位元組數)寫入c,有資料傳送需要時,從c中獲取。acquire到的大小即為可支援的最大傳送量。
// acquire 將quota全部獲取出來,根據實際使用量,將未使用的重新add回pool。
type quotapool struct
http2client.write消耗quota,client跟stream有各自的控制。
handlewindowupdate補充quota。
//用於接收流控。ondata通過判斷pendingdata、pendingupdate之和是否超過limit來進行流控。
type inflow struct
pendingdata:handledata->ondata增加pendingdata->s.write(可供io.readfull讀取)
pendingupdate:io.readfull(s1, p)->stream.read讀取資料->windowhandler->updatewindow->onread減少pendingdata,按照1/4limit量還清空pendingupdate->windowupdate->framer.writewindowupdate更新傳送端視窗大小->傳送端處理handlewindowupdate(id=0更新client,非0更新對應stream)
->進而增加傳送端quota
《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...
Cartographer原始碼篇 原始碼分析 1
在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...
python原始碼剖析 Python原始碼剖析
第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...