Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: scheduler, goroutine, gomaxprocs, thread

Как работает планировщик горутин (роль GOMAXPROCS, зависимость от ядер ОС)?

Вопрос раскрывает механизм планирования горутин и влияние GOMAXPROCS на производительность.

Короткий ответ

Планировщик Go распределяет горутины по потокам ОС. GOMAXPROCS задаёт максимальное число потоков для CPU-bound задач (по умолчанию = числу ядер). Для I/O-bound задач горутины могут работать на меньшем числе потоков.

Длинный ответ

Планировщик Go использует M:N модель, где M горутин работают на N потоках ОС.

Основные компоненты:

  1. G (Goroutine) — выполняемая задача.

  2. M (Machine) — поток ОС.

  3. P (Processor) — контекст выполнения (до GOMAXPROCS штук).

Роль GOMAXPROCS:

  • Определяет, сколько потоков ОС (M) могут одновременно выполнять CPU-bound код.

  • По умолчанию равно runtime.NumCPU().

Пример:

package main

import (
	"fmt"
	"runtime"
)

func main() {
	fmt.Println("Текущий GOMAXPROCS:", runtime.GOMAXPROCS(0)) // По умолчанию = ядрам CPU
	runtime.GOMAXPROCS(1) // Ограничиваем одним потоком
	// Далее горутины будут выполняться на одном ядре
}

Когда менять GOMAXPROCS:

  • Увеличить: если CPU-bound задачи не используют все ядра.

  • Уменьшить: для снижения накладных расходов на переключение.

Вывод:
GOMAXPROCS балансирует между использованием CPU и накладными расходами.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Golang

    Golang

Ключевые слова

#scheduler

#goroutine

#gomaxprocs

#thread

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.