Sobes.tech
Junior — Middle

È possibile implementare un'elaborazione parallela completa dei compiti nel linguaggio Go?

sobes.tech AI

Risposta dell'AI

Sì, nel linguaggio Go è possibile implementare un'elaborazione parallela completa delle attività. Go fornisce supporto integrato per la concorrenza tramite le goroutine, che sono thread leggeri gestiti dal runtime di Go.

Le goroutine consentono di eseguire funzioni in parallelo, e i canali (channels) facilitano lo scambio sicuro di dati tra di loro.

Esempio di elaborazione parallela:

package main

import (
    "fmt"
    "time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Printf("Lavoratore %d sta elaborando il task %d\n", id, j)
        time.Sleep(time.Second) // simulazione di lavoro
        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("Risultato:", <-results)
    }
}

In questo modo, Go permette di implementare in modo efficiente l'elaborazione parallela con sforzi minimi.