Как устроены горутины и сколько памяти занимают?

Middle+
2.7k просмотров
AFK Offer AI

Горутина — легковесный поток выполнения, управляемый рантаймом Go а не ОС. Начинает с ~2-8KB стека который растёт динамически.

Создаётся через go func(). Переключение между горутинами дешевле чем между потоками ОС — нет системного вызова.

Планировщик Go (GMP модель) мультиплексирует тысячи горутин на несколько потоков ОС. Количество потоков = GOMAXPROCS (обычно кол-во ядер).

Горутина блокируется на I/O или канале — планировщик переключает поток на другую горутину. Поэтому можно спокойно создавать тысячи горутин без проблем.

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

Как устроен Map в Go?