Sobes.tech
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 аст. Ин андоза статик нест ва метавонад динамикӣ тағйир ёбад.