Middle+
Goroutinlar qanday tuzilgan va ular stekda qancha xotira oladi?
sobes.tech AI
AIdan javob
Goroutine — bu Go ishga tushirish muhiti (runtime) tomonidan boshqariladigan yengil oqim. Ular tizim oqimlarining (ipul) kamroq soniga multiplex qilinadi.
Asosiy komponentlar:
- Yig'indi: Har bir goroutine alohida va kengaytiriladigan yig'indi (stack) ga ega. Dastlab kichik (Go 1.4+ bilan 16KB, avval 8KB), ehtiyoj bo'lsa, kengaytirilishi yoki qisqartirilishi mumkin.
- Go jadvali: M:N modelini amalga oshiradi (M goroutine N tizim oqimida). U mavjud tizim oqimlari bo'ylab goroutine'larni o'tkazishni boshqaradi. O'tkazish bloklovchi operatsiyalar (kiritish/chiqish, kanal kutish) yoki
runtime.Gosched()chaqiruvi bilan amalga oshadi. - Kontekst: Ishga tushirish uchun mashina kodiga ko'rsatkich, yig'indi ko'rsatkichi va jadval uchun boshqa metama'lumotlarni o'z ichiga oladi.
Go 1.4 dan boshlab, goroutine ning boshlang'ich yig'indisi 16KB. Bu o'lcham statik emas va dinamik ravishda o'zgarishi mumkin.