Sobes.tech
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-ին սպասել բոլոր գորուտինների ավարտին մինչև ծրագրից դուրս գալը։