Sobes.tech
Junior — Middle

Is het mogelijk om volledige parallelle taakverwerking te implementeren in de Go-taal?

sobes.tech AI

Antwoord van AI

Ja, in de programmeertaal Go is het mogelijk om volledige parallelle taakverwerking te implementeren. Go biedt ingebouwde ondersteuning voor gelijktijdigheid via goroutines, die lichte threads zijn beheerd door de Go-runtime.

Goroutines maken het mogelijk om functies parallel uit te voeren, en kanalen (channels) zorgen voor een veilige gegevensuitwisseling tussen hen.

Voorbeeld van parallelle verwerking:

package main

import (
    "fmt"
    "time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Printf("Werker %d verwerkt taak %d\n", id, j)
        time.Sleep(time.Second) // simulatie van werk
        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("Resultaat:", <-results)
    }
}

Op deze manier maakt Go het mogelijk om efficiënt parallel te verwerken met minimale inspanning.