Junior — Middle
Come viene implementata la logica del pianificatore di stati nel sistema?
sobes.tech AI
Risposta dell'AI
Il pianificatore di macchine a stati (state machine scheduler) in un sistema implementa generalmente la logica delle transizioni tra stati di un oggetto o processo basata su eventi e condizioni.
In Go, questo può essere realizzato tramite:
- Definizione degli stati come costanti o tipi.
- Uso di switch o map per gestire le transizioni.
- Canali per ricevere eventi e gestire l'asincronia.
Esempio di una macchina a stati finiti semplice:
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("Stato iniziale:", state)
state = stateMachine(state, EventStart)
fmt.Println("Dopo l'evento di avvio:", state)
state = stateMachine(state, EventStop)
fmt.Println("Dopo l'evento di stop:", state)
}
Nei sistemi reali, il pianificatore può usare strutture più complesse, timer, gestione degli errori e parallelismo per gestire gli stati.