Junior — Middle
Czy można zaimplementować pełną równoległą obsługę zadań w języku Go?
sobes.tech AI
Odpowiedź od AI
Tak, w języku Go można zaimplementować pełną równoległą obsługę zadań. Go zapewnia wbudowane wsparcie dla współbieżności poprzez goroutines, które są lekkimi wątkami zarządzanymi przez środowisko uruchomieniowe Go.
Goroutines pozwalają na uruchamianie funkcji równolegle, a kanały (channels) zapewniają bezpieczną wymianę danych między nimi.
Przykład równoległej obsługi:
package main
import (
"fmt"
"time"
)
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
fmt.Printf("Pracownik %d przetwarza zadanie %d\n", id, j)
time.Sleep(time.Second) // symulacja pracy
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("Wynik:", <-results)
}
}
W ten sposób Go pozwala na efektywną realizację równoległego przetwarzania z minimalnym wysiłkiem.