Преимущества горутин vs потоков?

Junior
999 просмотров
AFK Offer AI

Горутины выигрывают у потоков ОС по нескольким параметрам:

1. Память: горутина ~2-8 KB (стек растёт), поток ОС ~1-8 MB фиксированно 2. Создание: горутина — наносекунды, поток — микросекунды (syscall) 3. Переключение: горутины переключаются в userspace без syscall, потоки — через ядро 4. Количество: миллионы горутин vs тысячи потоков

Go scheduler реализует M:N модель: M горутин на N потоков ОС. Используется work-stealing: если один поток простаивает, он забирает горутины у загруженного.

Горутины кооперативно-преемптивные: точки вытеснения в вызовах функций и с Go 1.14 — асинхронная преемптивность через сигналы.

Следующий вопрос

Как завершить несколько горутин?