第 74 期 time.Timer 原始碼分析 (Go 1.14)
文章來自於:https://reading.developerlearning.cn/reading/74-2020-01-02-time-in-go-1-14/
分享者:歐長坤
觀看視訊
【Go 夜讀】#74 time.Timer 原始碼分析 (Go 1.14)
time 是一個很有意思的包,除去需要獲取當前時間的 Now 這一平淡無奇、直接對系統呼叫進行封裝( runtime.nanotime
)的函式外,其中最有意思的莫過於它所提供的 Timer 和 Ticker 了。他們的實現,驅動了諸如 time.After
, time.AfterFunc
, time.Tick
, time.Sleep
等方法。
即將釋出的 Go 1.14 將為 Timer 及其相關依賴帶來大幅效能,本次分享我們就來詳細分析以下 Go
1.14 中 time.Timer
的原始碼及其演進過程。
大綱
- 排程器與排程迴圈
- Timer 狀態機
- Timer 的啟動、終止與重置
- Timer 的觸發時機
- Go 1.10 以前以及 Go 1.10 的 Timer 實現
分享時間
2020-01-02 21:00 UTC+8
分享地址
Slides
參考資料
- runtime: improve timers scalability on multi-CPU systems
- runtime: make timers faster
- Go 夜讀第 56 期:channel & select 原始碼分析
- Go 語言原本: 計時器
- timer-based task scheduler
更多原創文章乾貨分享,請關注公眾號
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 第 29 期 Go opentracing jaeger 整合及原始碼分析Go原始碼
- 第 75 期 2020 年 Go 的一些發展計劃 (Go 1.14 && Go 1.15)Go
- 第 27 期 go mod 原始碼閱讀 part 2Go原始碼
- 科技愛好者週刊:第 74 期
- 第 23 期 Drone 簡單介紹和部分原始碼分析原始碼
- go rpc 原始碼分析GoRPC原始碼
- go ants原始碼分析Go原始碼
- 第 35 期 context 原始碼閱讀Context原始碼
- Go的WaitGroup原始碼分析GoAI原始碼
- k8s client-go原始碼分析 informer原始碼分析(6)-Indexer原始碼分析K8SclientGo原始碼ORMIndex
- k8s client-go原始碼分析 informer原始碼分析(4)-DeltaFIFO原始碼分析K8SclientGo原始碼ORM
- 第 57 期 sync/semaphore 原始碼淺析原始碼
- 第 31 期 flag 包原始碼閱讀原始碼
- go sync.Map原始碼分析Go原始碼
- k8s client-go原始碼分析 informer原始碼分析(5)-Controller&Processor原始碼分析K8SclientGo原始碼ORMController
- 以太坊原始碼分析(44)p2p-database.go原始碼分析原始碼DatabaseGo
- 以太坊原始碼分析(45)p2p-dial.go原始碼分析原始碼Go
- 以太坊原始碼分析(46)p2p-peer.go原始碼分析原始碼Go
- 以太坊原始碼分析(48)p2p-server.go原始碼分析原始碼ServerGo
- 以太坊原始碼分析(49)p2p-table.go原始碼分析原始碼Go
- 以太坊原始碼分析(50)p2p-udp.go原始碼分析原始碼UDPGo
- k8s client-go原始碼分析 informer原始碼分析(1)-概要分析K8SclientGo原始碼ORM
- 第 67 期 Go database/sql 資料庫連線池分析GoDatabaseSQL資料庫
- cache2go – cachetable原始碼分析Go原始碼
- go.uber.org/ratelimit 原始碼分析GoMIT原始碼
- Go 互斥鎖 Mutex 原始碼分析(二)GoMutex原始碼
- Kubernetes client-go 原始碼分析 - ReflectorclientGo原始碼
- Go語言——sync.Map原始碼分析Go原始碼
- Go語言—sync.Cond原始碼分析Go原始碼
- 第 55 期 Go&WebAssembly 簡介GoWeb
- #21 Go errors 處理及 zap 原始碼分析GoError原始碼
- go 原始碼分析 goroutine 概覽與排程Go原始碼
- k8s client-go原始碼分析 informer原始碼分析(2)-初始化與啟動分析K8SclientGo原始碼ORM
- go-ethereum原始碼解析-miner挖礦部分原始碼分析CPU挖礦Go原始碼
- 第 16 課 PostgreSQL查詢過程原始碼分析SQL原始碼
- 詳解Java 容器(第③篇)——容器原始碼分析 - ListJava原始碼
- 詳解Java 容器(第④篇)——容器原始碼分析 - MapJava原始碼
- [Vue系列一]vue生命週期和原始碼分析Vue原始碼