Junior — Middle
Կարող եք ցույց տալ խմբերի սպասման մեխանիզմի կիրառման օրինակ ծրագրավորման մեջ?
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, խմբերի սպասման մեխանիզմը (sync.WaitGroup) օգտագործվում է գորուտինների խմբի ավարտին սպասելու համար: Սա հարմար է, երբ անհրաժեշտ է միաժամանակ մի քանի պառալելային առաջադրանք սկսել և սպասել նրանց ավարտին:
Օրինակ՝
package main
import (
"fmt"
"sync"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done() // Հայտնում է, որ աշխատանքը ավարտվել է
fmt.Printf("Աշխատող %d սկսվեց\n", id)
// Այստեղ կարող է լինել ցանկացած աշխատանք
fmt.Printf("Աշխատող %d ավարտվեց\n", id)
}
func main() {
var wg sync.WaitGroup
numWorkers := 3
wg.Add(numWorkers) // Կարգավորում է սպասվող գորուտինների քանակը
for i := 1; i <= numWorkers; i++ {
go worker(i, &wg)
}
wg.Wait() // Սպասում է, մինչև բոլոր գորուտինները կանչեն Done()
fmt.Println("Բոլոր աշխատողները ավարտվեցին")
}
Այս օրինակով, main-ը սկսում է 3 գորուտին, որոնք կատարում են worker ֆունկցիան: WaitGroup-ը թույլ է տալիս main-ին սպասել բոլոր գորուտինների ավարտին մինչև ծրագրից դուրս գալը։