Sobes.tech
Junior — Middle

Мо метавонед шарҳ диҳед, ки Wait Group чист ва дар барномасозӣ барои чӣ истифода мешавад?

sobes.tech AI

Ҷавоб аз AI

Гурӯҳи интизорӣ дар Go як сохтор аз бастаи sync мебошад, ки барои интизор шудан ба анҷоми гурӯҳи goroutines истифода мешавад. Он имкон медиҳад, ки goroutine асосӣ (ё дигар) дар ҳоле ки ҳамаи goroutines оғозшуда корро анҷом медиҳанд, блоқ шавад.

Методҳои асосӣ:

  • Add(int) — шумораи goroutines интизоршударо меафзояд.
  • Done() — шумораро кам мекунад, вақте ки goroutine анҷом меёбад.
  • Wait() — иҷроиро банд мекунад, то ки шумора ба сифр расад.

Маслиҳат барои истифода:

var wg sync.WaitGroup
wg.Add(2) // интизор ҳастем 2 goroutine

go func() {
    defer wg.Done()
    // кори goroutine аввал
}()

go func() {
    defer wg.Done()
    // кори goroutine дуввум
}()

wg.Wait() // интизорем, ки ҳарду анҷом ёбанд

Ин барои ҳамоҳангсозии вазифаҳои параллелӣ ва пешгирии анҷоми барвақти барнома муфид аст.