Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: waitgroup, sync, goroutines, concurrency, synchronization

Что такое WaitGroup?

Этот вопрос проверяет знание механизма синхронизации WaitGroup, который используется для ожидания завершения нескольких горутин.

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

WaitGroup в Go — это структура из пакета sync, позволяющая организовать ожидание завершения набора горутин. Она предоставляет методы для увеличения счетчика активных горутин, их завершения и блокировки выполнения до их завершения.

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

WaitGroup — это инструмент синхронизации, который упрощает управление множеством горутин. Его ключевые методы:

  • Add(n int) — увеличивает счетчик горутин на n.

  • Done() — уменьшает счетчик на 1 (обычно вызывается горутиной по завершении).

  • Wait() — блокирует выполнение текущей горутины до обнуления счетчика.

Пример:

package main

import (
	"fmt"
	"sync"
)

func worker(id int, wg *sync.WaitGroup) {
	defer wg.Done() // Уменьшает счетчик после завершения
	fmt.Printf("Горутина %d начала работу\n", id)
	// Эмуляция работы
	fmt.Printf("Горутина %d завершила работу\n", id)
}

func main() {
	var wg sync.WaitGroup

	for i := 1; i <= 3; i++ {
		wg.Add(1) // Увеличиваем счетчик
		go worker(i, &wg)
	}

	wg.Wait() // Ждем завершения всех горутин
	fmt.Println("Все горутины завершены")
}

В каких случаях использовать:

  • Для ожидания завершения набора горутин.

  • Для синхронизации между основным потоком и конкурентно работающими горутинами.

  • При выполнении параллельных задач с неизвестным временем завершения.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • Golang

    Golang

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

#waitgroup

#sync

#goroutines

#concurrency

#synchronization

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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