Sobes.tech
Junior — Middle

Бир убакта ишке киргизилген беш гурутиндин натыйжаларын кантип чогултуу жана иштетүү керек?

sobes.tech AI

AIден жооп

Go тилинде бир убакта беш goroutine иштетип, алардын жыйынтыктарын чогултуу үчүн каналдарды (channels) колдонсо болот. Ар бир goroutine жыйынтыгын каналга жиберет, ал эми негизги функция каналдан керектүү санын окуйт.

Мисал:

package main

import (
    "fmt"
    "sync"
)

func worker(id int, ch chan<- int, wg *sync.WaitGroup) {
    defer wg.Done()
    // кээ бир иш
    result := id * 2
    ch <- result
}

func main() {
    ch := make(chan int, 5) // буферленген канал
    var wg sync.WaitGroup

    for i := 1; i <= 5; i++ {
        wg.Add(1)
        go worker(i, ch, &wg)
    }

    wg.Wait()
    close(ch)

    for res := range ch {
        fmt.Println("Жыйынтык:", res)
    }
}

Бул жерде, worker — жыйынтыкты эсептеп, каналга жиберген goroutine. Негизги функция WaitGroup аркылуу бардык goroutineдер бүтүшүн күтөт, андан кийин каналды жабат жана бардык жыйынтыктарды окуйт.