Go例程與操作系統線程的區別

Item 線程 Go例程
棧大小 固定大小,一般爲2MB 變長大小,初始大小一般爲2KB,運行時視需要擴展,最大可達1GB
調度器 內核調度器scheduler,每隔一段時間會有一個硬件定時器超時,導致scheduler被調用,scheduler會中斷當前線程,並保存線程上下文,切換到另外的線程執行,每次調度都涉及用戶態/內核態的切換 Go語言自帶的調度器,採用m:n調度,即將m個go例程分發到n個操作系統線程,go例程切換不需要在用戶態和內核態之間的切換,因此效率更高
ID 啓動線程後會返回一個線程ID,可以用以後續保持類似map的本地存儲結構,但這會導致類似全局變量濫用的類似問題 無ID
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章