package
0.0.0-20241225174012-7a0820eadc6a
Repository: https://github.com/chtonad0000/golang.git
Documentation: pkg.go.dev

# README

waitgroup

sync.WaitGroup решает задачу ожидания завершения всех горутин из набора.

Что нужно сделать?

Нужно написать реализацию WaitGroup, используя каналы.

Использование пакета sync в этой задаче запрещено!

type WaitGroup struct {}

func (wg *WaitGroup) Add(delta int) {}
func (wg *WaitGroup) Done() {}
func (wg *WaitGroup) Wait() {}

WaitGroup можно представлять себе как число.

  • При инициализации переменной типа WaitGroup число равно нулю.
  • Вызов Add прибавляет delta к числу.
  • Вызов Done вычитает из числа единицу.
  • Если при вызове Add или Done число становится отрицательным, происходит panic.
  • Вызов Wait при числе равном нулю -- это no-op.
  • Вызов Wait при числе большем нуля блокируется до тех пор, пока число не станет равным нулю.

WaitGroup может быть "переиспользована". После достижения нуля можно вызвать Add, заблокировав последующий Wait.

# Functions

New creates WaitGroup.

# Structs

A WaitGroup waits for a collection of goroutines to finish.