Sobes.tech
Senior

Горутина чист? Чӣ тавр аз сими системӣ фарқ мекунад? Дар бораи нақшаи Go (GMP) нақл кунед.

sobes.tech AI

Ҷавоб аз AI

Горутина — это лëгкий поток выполнения в языке Go, управляемый рантаймом Go, а не операционной системой. В отличие от системного треда, горутины имеют гораздо меньший размер стека (начинается с нескольких килобайт и может динамически расти), что позволяет запускать тысячи и даже миллионы горутин одновременно с низкими накладными расходами.

Системные треды создаются и планируются ОС, имеют фиксированный большой стек и более дорогие операции переключения контекста.

Планировщик Go основан на модели GMP:

  • G (goroutine) — сама горутина, единица выполнения.
  • M (машина) — системный поток (OS thread), на котором выполняются горутины.
  • P (процессор) — логический процессор, ресурс, необходимый для выполнения горутины на M.

P управляет очередью готовых к выполнению горутин (G). M может выполнять только одну горутину за раз, но благодаря наличию нескольких M и P планировщик эффективно распределяет горутины по системным потокам, обеспечивая конкурентность и параллелизм.

Такой подход позволяет Go эффективно использовать системные ресурсы и масштабироваться на многопроцессорных системах.