Junior — Middle
Hoe wordt het concurrentiemodel geïmplementeerd in de Golang-taal?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go is het model van gelijktijdigheid gebaseerd op goroutines en kanalen.
-
Goroutines zijn lichte threads die worden gestart met het sleutelwoord
go. Ze maken het mogelijk functies parallel uit te voeren zonder aanzienlijke resourcekosten. -
Kanalen zijn getypeerde kanalen voor gegevensuitwisseling tussen goroutines, die synchronisatie en veilige informatie-uitwisseling garanderen.
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)
}
}
In dit voorbeeld voeren drie goroutines gelijktijdig werk uit en sturen het resultaat naar een kanaal, waarvan de hoofdthread het leest.
Op deze manier vereenvoudigt Go gelijktijdig programmeren door de complexiteit van threads en synchronisatie te verbergen.