Junior — Middle
Ar įmanoma įgyvendinti visišką paralelinį užduočių apdorojimą Go kalba?
sobes.tech AI
Atsakymas iš AI
Taip, Go kalboje galima įgyvendinti pilną užduočių paralelų apdorojimą. Go suteikia įmontuotą konkurencijos palaikymą per goroutines, kurios yra lengvos srautai, valdomi Go vykdymo laiko.
Goroutines leidžia vykdyti funkcijas paraleliai, o kanalai (channels) užtikrina saugų duomenų mainus tarp jų.
Paralelios apdorojimo pavyzdys:
package main
import (
"fmt"
"time"
)
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
fmt.Printf("Darbininkas %d apdoroja užduotį %d\n", id, j)
time.Sleep(time.Second) // darbo imitacija
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("Rezultatas:", <-results)
}
}
Taip, Go leidžia efektyviai įgyvendinti paralelų apdorojimą su minimaliomis pastangomis.