Junior — Middle
Používali jste mechanismus synchronizace pomocí sync.WaitGroup ve svých projektech?
sobes.tech AI
Odpověď od AI
Ano, v projektech v jazyce Go se často používá sync.WaitGroup k synchronizaci gorutin. Tento mechanismus umožňuje čekat na dokončení skupiny paralelních úkolů před pokračováním.
Princip fungování:
- Vytvoří se objekt
WaitGroup. - Před spuštěním každé gorutiny se zavolá
Add(1), čímž se zvýší čítač. - Uvnitř gorutiny po dokončení práce se zavolá
Done(), čímž se čítač sníží. - Hlavní gorutina zavolá
Wait(), která se zablokuje, dokud čítač nedosáhne nuly.
Příklad:
var wg sync.WaitGroup
wg.Add(2) // čekáme na 2 gorutiny
go func() {
defer wg.Done()
// práce první gorutiny
}()
go func() {
defer wg.Done()
// práce druhé gorutiny
}()
wg.Wait() // čekáme na obě
Toto je užitečné pro koordinaci paralelních operací a zabránění předčasnému ukončení programu.