Middle+
Борои бештар дар бораи WaitGroup бигӯ: чӣ гуна кор мекунад, Add, Done, Wait чӣ мекунанд?
sobes.tech AI
Ҷавоб аз AI
Вақтгрупп дар Го барои интизор шудан ба анҷоми гурӯҳи горутинҳо истифода мешавад.
- Add(n int) — ҳисобиро ба n меорад, одатан пеш аз оғоз кардани горутинҳо даъват мешавад.
- Done() — ҳисобиро кам мекунад ба 1, дар дохили горутин пас аз анҷоми кор даъват мешавад.
- Wait() — иҷроиро бозмедорад то ҳисобчик ба сифр расад, яъне то ҳама горутинҳо Done-ро даъват кунанд.
Масалан:
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() // интизор ҳастем, то ҳама горутинҳо тамом шаванд
fmt.Println("Ҳамаи горутинҳо тамом шуданд")
Инчунин, Вақтгрупп кӯмак мекунад, ки вазифаҳои параллелиро ҳамоҳанг созад ва интизор шавад, ки онҳо ба анҷом расанд.