說到 Go 語言,你會想到什麼呢?
簡潔?美麗?強大?無所不在?從筆者的角度來看,這些都是 Go 語言的一些形容詞而已。
「存在先於本質」,可是,Go 語言到底是什麼?這個問題可能又不免太大了。
秉持著鐵人賽的精神,我們就從 Hello World 開始吧!在接下來的 30 天當中,筆者將使用靜態的 vim-go 與動態的 gdb 追蹤工具觀察 Go 語言程式,目標是理解重要標準函式庫的實作並妥善的解說給讀者;如果能夠來得及的話,也希望能夠涵蓋到其他面向,比方說 Go compiler 之類的。
讓我們一起努力吧!
前情提要 昨日也追蹤了 schedinit 函式的幾個初始化部份。 schedinit ... 今天看完就可以過半了吧 ... alginit()...
前情提要 schedinit 函式終於接近尾聲。昨日追蹤的是與 module、signal 相關的幾項初始化。 schedinit ... goargs(...
前情提要 昨日提到除錯選項的 allocfreetrace,但若要觀察 scheduler 行為,hw 範例還是太單薄了一些。 schedinit ......
前情提要 原本打算昨日結束整個 schedinit 部份,但光是寫範例程式和追蹤其中的 P-M-G 關係就花了許多時間... schedinit ......
前情提要 昨日終於結束了 schedinit 部份,主要是追 gcinit 函式,還有從比較抽象的角度瀏覽了一些垃圾回收的機制。 退回一層 回到我們之前所在的...
前情提要 昨日開始了 newproc 函式,概念上應該是要準備一個新的 goroutine 準備執行?通常是用在 go statement 的生成,但是這裡是...
前情提要 昨日我們以相當貼近記憶體的方式看完了 newproc 函式,主要是在兜出後續呼叫所需要的參數,為接下來的 systemstack 呼叫作準備。 進入...
前情提要 昨日我們簡單路過 systemstack 函式之後開始了 newproc1 函式。 暫停回顧 P-M-G 關係 雖然在第 10 天時有簡單介紹註解中...
前情提要 昨日我們都在爬梳註解與其他資料,企圖從比較鳥瞰的角度去觀察排程器與 GO 的系統模型。 acquirem 和 releasem(在 runtime/...
前情提要 昨日我們走過 newproc1 函式的最開頭部份;順利的情況下,能夠取得一個新的 G。 使用 gdb 驗證 我們將斷點設在 runtime.newp...