Junior — Middle
Hoe is de logica van de statusplanner in het systeem geïmplementeerd?
sobes.tech AI
Antwoord van AI
De toestandplanner (state machine scheduler) in een systeem implementeert meestal de logica van overgangen tussen toestanden van een object of proces op basis van gebeurtenissen en voorwaarden.
In Go kan dit worden gerealiseerd door:
- Het definiëren van toestanden als constanten of types.
- Gebruik van switch of kaarten om overgangen te verwerken.
- Kanalen voor het ontvangen van gebeurtenissen en het beheren van asynchroniteit.
Voorbeeld van een eenvoudige eindige toestandsmachine:
package main
import "fmt"
type State int
const (
StateIdle State = iota
StateRunning
StateStopped
)
type Event int
const (
EventStart Event = iota
EventStop
)
func stateMachine(current State, event Event) State {
switch current {
case StateIdle:
if event == EventStart {
return StateRunning
}
case StateRunning:
if event == EventStop {
return StateStopped
}
}
return current
}
func main() {
state := StateIdle
fmt.Println("Initiële toestand:", state)
state = stateMachine(state, EventStart)
fmt.Println("Na startgebeurtenis:", state)
state = stateMachine(state, EventStop)
fmt.Println("Na stopgebeurtenis:", state)
}
In echte systemen kan de planner complexere structuren, timers, foutafhandeling en parallelisme gebruiken om de toestanden te beheren.