Junior — Middle
Hoe worden paralleliteit en competitie geïmplementeerd in de Go-taal?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go worden paralleliteit en gelijktijdigheid geïmplementeerd via goroutines en kanalen.
-
Goroutines zijn lichte threads die worden gestart met het sleutelwoord
go. Ze maken het mogelijk functies asynchroon en parallel uit te voeren. -
Kanalen worden gebruikt voor communicatie tussen goroutines en voor gegevenssynchronisatie. Ze stellen je in staat om veilig waarden tussen goroutines over te dragen, waardoor racecondities worden voorkomen.
Voorbeeld:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan string) {
time.Sleep(time.Second)
ch <- fmt.Sprintf("Werker %d klaar", id)
}
func main() {
ch := make(chan string)
for i := 1; i <= 3; i++ {
go worker(i, ch)
}
for i := 1; i <= 3; i++ {
msg := <-ch
fmt.Println(msg)
}
}
Op deze manier biedt Go eenvoudige en efficiënte middelen om concurrerende programma's te schrijven zonder complexe threadbeheer.