Senior
Сен WaitGroup жазуға шешім қабылдадың ба, себебі сенде канал пайда болды немесе горутин үшін бір нәрсе үшін жазғың келді ме?
sobes.tech AI
AI-дан жауап
WaitGroup — Go тілінде горутиндердің аяқталуын күтетін құрал.
Егер бірнеше горутин параллель тапсырмаларды орындап жатса және олардың аяқталуын күткіңіз келсе, WaitGroup ыңғайлы құрал.
Каналдар мен горутиндер — әртүрлі механизмдер. Канал — коммуникация мен синхрондау үшін, ал WaitGroup — олардың аяқталуын күтуде пайдаланылады.
Мысалы, егер бірнеше горутин тапсырмаларды орындап жатса және олардың бәрі аяқталуын күткіңіз келсе, онда сіз WaitGroup қолданасыз:
var wg sync.WaitGroup
wg.Add(3) // 3 горутин күтеді
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
// горутина жұмысы
fmt.Println("Горутина", id, "аяқталды")
}(i)
}
wg.Wait() // барлық горутиндердің аяқталуын күтеді
Осылайша, WaitGroup — горутиндердің аяқталуын синхрондау үшін пайдаланылады, каналдар пайда болғандықтан емес.