Junior — Middle
Може ли да се реализира пълна паралелна обработка на задачи в езика Go?
sobes.tech AI
Отговор от AI
Да, в езика Go може да се реализира пълноценна паралелна обработка на задачи. Go предоставя вградена поддръжка за конкуренция чрез горутините, които са леки нишки, управлявани от средата за изпълнение на Go.
Горутините позволяват изпълнение на функции паралелно, а каналите (channels) осигуряват безопасен обмен на данни между тях.
Пример за паралелна обработка:
package main
import (
"fmt"
"time"
)
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
fmt.Printf("Работник %d обработва задача %d\n", id, j)
time.Sleep(time.Second) // имитация на работа
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("Резултат:", <-results)
}
}
По този начин, Go позволява ефективно реализиране на паралелна обработка с минимални усилия.