Junior — Middle
Kas on võimalik täielikult paralleelne ülesannete töötlemine Go keeles?
sobes.tech AI
Vastus AI-lt
Jah, Go keeles on võimalik täielikult rakendada ülesannete paralleelset töötlemist. Go pakub sisseehitatud konkurentsi tuge goroutine'ide kaudu, mis on kergekaalulised niidid, mida haldab Go jooksukeskkond.
Goroutine'id võimaldavad funktsioone paralleelselt käivitada, ning kanalid (channels) tagavad nende vahel turvalise andmevahetuse.
Paralleelse töötlemise näide:
package main
import (
"fmt"
"time"
)
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
fmt.Printf("Tööline %d töötleb ülesannet %d\n", id, j)
time.Sleep(time.Second) // töö simulatsioon
results <- j * 2
}
}
func main() {
jobs := make(chan int, 5)
results := make(chan int, 5)
for w := 1; w <= 3; w++ {
go worker(w, jobs, results)
}
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
for a := 1; a <= 5; a++ {
fmt.Println("Tulemus:", <-results)
}
}
Sellest tulenevalt võimaldab Go tõhusalt rakendada paralleelset töötlemist minimaalsete pingutustega.