Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Чем горутины отличаются от потоков ОС (легковесность, планировщик Go)?

Этот вопрос проверяет понимание разницы между горутинами и потоками ОС, включая их эффективность и управление.

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

Горутины легче потоков ОС: они занимают меньше памяти (стек ~2 КБ против ~1 МБ) и переключаются быстрее, так как управляются планировщиком Go, а не ОС. Потоки зависят от ядер CPU, а горутин может быть тысячи на одном потоке.

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

Горутины — это легковесные потоки, управляемые рантаймом Go, а не ОС.

Ключевые отличия:

  • Память:

    • Горутина: стек начинается с ~2 КБ и динамически растёт/сжимается.

    • Поток ОС: фиксированный стек (обычно 1–8 МБ).

  • Планирование:

    • Горутины: переключаются пользовательским планировщиком Go без затрат на системные вызовы.

    • Потоки: переключаются ядром ОС, что требует больше ресурсов.

  • Масштабирование:

    • Горутины: миллионы могут работать на нескольких потоках ОС.

    • Потоки: ограничены числом ядер CPU (обычно сотни).

Пример:

package main

import (
	"fmt"
	"time"
)

func worker(id int) {
	fmt.Printf("Горутина %d\n", id)
}

func main() {
	for i := 0; i < 1000; i++ {
		go worker(i) // Запуск 1000 горутин
	}
	time.Sleep(time.Second) // Даём время на выполнение
}

Здесь 1000 горутин работают на нескольких потоках ОС.

Вывод:
Горутины эффективны для задач с высокой конкурентностью, где потоки ОС были бы избыточны.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Golang

    Golang

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

#goroutine

#thread

#scheduler

#concurrency

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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