Чем горутины отличаются от потоков ОС?

Junior
2k просмотров
AFK Offer AI

Горутины — user-space, потоки — kernel-space. Стек горутины: 2-8KB (растёт), потока: 1-8MB (фиксирован). Переключение горутин: ~100ns (без syscall), потоков: ~1-10μs (context switch в ядре).

Можно запустить миллион горутин, но не миллион потоков. Go-планировщик (GMP) мультиплексирует горутины на небольшое число потоков.

Блокирующие операции (I/O) паркуют горутину, но не тред — тред подхватывает другую горутину.

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

Как реализовано наследование в Go?