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.