Sobes.tech
Junior — Middle

Leg uit wat het concept van concurrency is in de programmeertaal Go en de rol ervan bij het ontwikkelen van parallelle toepassingen

sobes.tech AI

Antwoord van AI

In Go is concurrency het vermogen van een programma om meerdere taken gelijktijdig uit te voeren, waarbij de CPU-bronnen efficiënt worden gebruikt. In de Go-taal worden hiervoor goroutines gebruikt, dat zijn lichte threads die worden gestart met het sleutelwoord go.

Concurrency maakt het mogelijk om parallelle applicaties te schrijven, waarbij verschillende delen van de code gelijktijdig worden uitgevoerd, wat de prestaties en de responsiviteit van programma's verhoogt.

Voor synchronisatie en gegevensuitwisseling tussen goroutines worden kanalen (channels) gebruikt, die veilige communicatie zonder expliciete blokkeringen bieden.

Voorbeeld:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Werker %d start\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Werker %d klaar\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // start goroutine
    }
    time.Sleep(2 * time.Second) // wachten op goroutine-afronding
}

In dit voorbeeld worden drie goroutines gelijktijdig uitgevoerd, wat de concurrentie in Go demonstreert.