Junior — Middle
Použili ste v svojich projektoch mechanizmus synchronizácie pomocou sync.WaitGroup?
sobes.tech AI
Odpoveď od AI
Áno, v projektoch v jazyku Go sa často používa sync.WaitGroup na synchronizáciu gorutín. Tento mechanizmus umožňuje čakať na dokončenie skupiny paralelných úloh pred pokračovaním.
Princíp fungovania:
- Vytvorí sa objekt
WaitGroup. - Pred spustením každej gorutiny sa zavolá
Add(1), čím sa zvýši čítač. - Vo vnútri gorutiny, po dokončení práce, sa zavolá
Done(), ktorý znižuje čítač. - Hlavná gorutina zavolá
Wait(), ktorá sa zablokuje, kým čítač nedosiahne nulu.
Príklad:
var wg sync.WaitGroup
wg.Add(2) // čakáme na 2 gorutiny
go func() {
defer wg.Done()
// práca prvej gorutiny
}()
go func() {
defer wg.Done()
// práca druhej gorutiny
}()
wg.Wait() // čakáme na obe
Toto je užitočné na koordináciu paralelných operácií a zabránenie predčasnému ukončeniu programu.