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дер бүтүшүн күтөт, андан кийин каналды жабат жана бардык жыйынтыктарды окуйт.