Junior — Middle
Kā īstenot sinhronu gaidīšanu vairāku paralēlo uzdevumu pabeigšanai Go programmā?
sobes.tech AI
Atbilde no AI
Go valodā parasti izmanto sync.WaitGroup, lai sinhroni veiktu vairākus paralēlus uzdevumus. Tas ļauj palaist vairākas gorutīnas un gaidīt to pabeigšanu.
Piemērs:
package main
import (
"fmt"
"sync"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done() // Informē WaitGroup, ka uzdevums ir pabeigts
fmt.Printf("Darbinieks %d sāka\n", id)
// darba imitācija
// time.Sleep(time.Second)
fmt.Printf("Darbinieks %d pabeidza\n", id)
}
func main() {
var wg sync.WaitGroup
numWorkers := 3
wg.Add(numWorkers) // Uzstāda uzdevumu skaitu
for i := 1; i <= numWorkers; i++ {
go worker(i, &wg)
}
wg.Wait() // Gaida, kamēr visas gorutīnas pabeigsies
fmt.Println("Visi darbinieki pabeidza")
}
Tādējādi WaitGroup ļauj efektīvi sinhronizēt paralēlo uzdevumu izpildi.