ExpertiDict

Go · Essencial · Inglês · Técnico

WaitGroup

/ˈweɪt.ɡɹup/substantivo

Tipo do pacote sync que espera um conjunto de goroutines terminar. Add soma tarefas, Done conclui uma e Wait bloqueia até o contador zerar.

Onde usar

Aparece quando o programa dispara várias goroutines e precisa aguardar todas antes de seguir. Chamar Add dentro da goroutine, em vez de antes dela, é bug clássico de review.

Em código

var wg sync.WaitGroup
wg.Add(2)
go func() { defer wg.Done(); a() }()
go func() { defer wg.Done(); b() }()
wg.Wait() // espera as duas

Exemplos

Call wg.Add before starting the goroutine, not inside it.

Chame wg.Add antes de iniciar a goroutine, não dentro dela.

Main waits on the WaitGroup until every worker is done.

A main espera no WaitGroup até todos os workers terminarem.

Cuidado

Não copie um WaitGroup depois de usá-lo; passe um ponteiro, senão cada cópia tem seu próprio contador.

Veja também

Todos os termos de Go