Sobes.tech
Junior — Middle

Hoe wordt parallel en sequentieel verwerken van taken geïmplementeerd in de programmeertaal Go?

sobes.tech AI

Antwoord van AI

In Go wordt parallelle verwerking van taken uitgevoerd met behulp van goroutines, die lichte threads zijn die worden gestart met het sleutelwoord go. Een goroutine kan worden gestart om een functie asynchroon uit te voeren, en deze zal parallel werken met andere goroutines.

Sequentiële verwerking is gewoon het aanroepen van functies zonder go, waarbij taken achter elkaar worden uitgevoerd.

Voorbeeld van parallelle verwerking:

package main

import (
    "fmt"
    "time"
)

func taak(id int) {
    fmt.Printf("Taak %d gestart\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Taak %d voltooid\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go taak(i) // start een goroutine
    }
    time.Sleep(2 * time.Second) // wacht op het voltooien van de goroutines
}

In dit voorbeeld worden drie taken parallel gestart. Als go wordt verwijderd, worden de taken sequentieel uitgevoerd.

Om goroutines te synchroniseren en te beheren, worden vaak kanalen (channels) en sync.WaitGroup gebruikt.