Sobes.tech
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.