Junior — Middle
Hoe worden competitie, asynchroniteit en parallelisme geïmplementeerd in de Go-taal?
sobes.tech AI
Antwoord van AI
In Go worden competitie, asynchronie en parallelisme geïmplementeerd met behulp van goroutines en kanalen.
- Goroutines zijn lichte threads die worden gestart met het sleutelwoord
go. Ze maken het mogelijk functies asynchroon uit te voeren en te concurreren om bronnen. - Kanalen worden gebruikt voor veilige gegevensuitwisseling tussen goroutines, en zorgen voor synchronisatie en berichtoverdracht.
Parallelisme wordt bereikt door meerdere goroutines te starten die gelijktijdig op meerdere CPU-kernen kunnen draaien, als GOMAXPROCS wordt ingesteld.
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) // start een goroutine
}
for i := 1; i <= 3; i++ {
msg := <-ch // ontvang resultaat van kanaal
fmt.Println(msg)
}
}
Op deze manier biedt Go eenvoudige en efficiënte middelen voor werken met competitie en parallelisme.