Junior — Middle
Cum este implementată logica funcționării planificatorului de stări în sistem?
sobes.tech AI
Răspuns de la AI
Planificatorul de mașini de stare (state machine scheduler) într-un sistem implementează de obicei logica tranzițiilor între stările unui obiect sau proces pe baza evenimentelor și condițiilor.
În Go, acest lucru poate fi realizat prin:
- Definirea stărilor ca constante sau tipuri.
- Utilizarea switch sau mapări pentru gestionarea tranzițiilor.
- Canale pentru primirea evenimentelor și gestionarea asincronicității.
Exemplu de o mașină de stare finită simplă:
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("Starea inițială:", state)
state = stateMachine(state, EventStart)
fmt.Println("După evenimentul de start:", state)
state = stateMachine(state, EventStop)
fmt.Println("După evenimentul de stop:", state)
}
În sistemele reale, planificatorul poate folosi structuri mai complexe, temporizatoare, gestionarea erorilor și paralelism pentru a gestiona stările.