Middle+
Какво е горутина? Как се различава от поток на ОС? Кой управлява горутините?
sobes.tech AI
Отговор от AI
Goroutine е лек поток за изпълнение в езика Go, управляван от средата за изпълнение на Go, а не от операционната система. За разлика от потоковете на ОС, goroutine-ите заемат много по-малко памет (обикновено няколко килобайта стек, който може да расте и намалява динамично), и създаването и превключването им е много по-евтино по ресурси.
Основните разлики спрямо потоковете на ОС:
- Goroutine-ите се планират и управляват от средата за изпълнение на Go, а не от ОС.
- В един процес може да има хиляди или десетки хиляди goroutine-и без значителен товар.
- Превключването на контекста между goroutine-ите става по-бързо, тъй като не изисква превключване на ядро.
Управлението на goroutine-ите се осъществява от средата за изпълнение на Go, която съдържа собствен планировчик (M:N scheduler), който съпоставя много goroutine-и (G) с по-малък брой ядра на ОС (M). Това позволява ефективно използване на системните ресурси и опростява паралелното програмиране.