Middle+
Горутинҳо чӣ гуна сохта шудаанд ва дар стек чанд ёддошт мегиранд?
sobes.tech AI
Ҷавоб аз AI
Goroutine — бу ҷараёни сабукравии иҷро, ки муҳити иҷрои Go (runtime) идора мекунад. Онҳо дар шумораи ками системавӣ (пулҳои нишона) мултиплекс мешаванд.
Компонентҳои асосӣ:
- Stack: Ҳар як goroutine stack-и алоҳида ва васеъшаванда дорад. Аввалан хурд (16KB бо Go 1.4+, пештар 8KB), метавонад ба эҳтиёҷ зиёд ё кам карда шавад.
- Планировщик Go: Модели M:N-ро амалӣ мекунад (M goroutines дар N системавӣ нишона). Вай масъул аст барои гузариш байни goroutines дар нишонаҳои дастрас. Гузариш дар вақти амалҳои блок (вход/баромад, интизорӣ дар канал) ё тавассути даъвати равшан
runtime.Gosched()сурат мегирад. - Мавқеъ: Манзил ба коди мошин барои иҷро, манзил ба stack ва дигар мета маълумотҳоро дар бар мегирад, ки планировщик ба онҳо ниёз дорад.
Андозаи ибтидоии stack-и goroutine аз Go 1.4 16KB аст. Ин андоза статик нест ва метавонад динамикӣ тағйир ёбад.