Middle — Middle+
Hoe kan je de uitvoering van het programma controleren en de staat ervan beheren tijdens het gebruik?
sobes.tech AI
Antwoord van AI
In Go worden vaak gebruikt:
- Goroutines — lichte threads die functies parallel kunnen uitvoeren.
- Kanalen — voor synchronisatie en gegevensuitwisseling tussen goroutines.
- Context (context.Context) — voor het beheren van de levensduur van operaties, annuleringen en het doorgeven van deadlines.
- Package sync — voor het beheren van gelijktijdige toegang tot bronnen (Mutex, WaitGroup, enz.).
Voorbeeld van het gebruik van context om een operatie te annuleren:
ctx, cancel := context.WithCancel(context.Background())
go func() {
// na 2 seconden annuleren we de context
time.Sleep(2 * time.Second)
cancel()
}()
select {
case <-time.After(5 * time.Second):
fmt.Println("Operatie voltooid")
case <-ctx.Done():
fmt.Println("Operatie geannuleerd")
}
Op deze manier wordt de toestand van het programma beheerd door goroutines te coördineren, de context te gebruiken voor annuleringen en synchronisatie, en door mechanismen zoals locks en signalen.