Sobes.tech
Middle+

Какво е горутина? Как се различава от поток на ОС? Кой управлява горутините?

sobes.tech AI

Отговор от AI

Goroutine е лек поток за изпълнение в езика Go, управляван от средата за изпълнение на Go, а не от операционната система. За разлика от потоковете на ОС, goroutine-ите заемат много по-малко памет (обикновено няколко килобайта стек, който може да расте и намалява динамично), и създаването и превключването им е много по-евтино по ресурси.

Основните разлики спрямо потоковете на ОС:

  • Goroutine-ите се планират и управляват от средата за изпълнение на Go, а не от ОС.
  • В един процес може да има хиляди или десетки хиляди goroutine-и без значителен товар.
  • Превключването на контекста между goroutine-ите става по-бързо, тъй като не изисква превключване на ядро.

Управлението на goroutine-ите се осъществява от средата за изпълнение на Go, която съдържа собствен планировчик (M:N scheduler), който съпоставя много goroutine-и (G) с по-малък брой ядра на ОС (M). Това позволява ефективно използване на системните ресурси и опростява паралелното програмиране.