Junior — Middle
Ako je implementovaná logika práce plánovača stavov v systéme?
sobes.tech AI
Odpoveď od AI
Plánovač stavov (state machine scheduler) v systéme zvyčajne implementuje logiku prechodov medzi stavmi objektu alebo procesu na základe udalostí a podmienok.
V jazyku Go to možno realizovať pomocou:
- Definície stavov ako konštánt alebo typov.
- Použitia switch alebo máp na spracovanie prechodov.
- Kanálov na prijímanie udalostí a správu asynchrónnosti.
Príklad jednoduchej konečnej automaty:
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("Počiatočný stav:", state)
state = stateMachine(state, EventStart)
fmt.Println("Po začatí udalosti:", state)
state = stateMachine(state, EventStop)
fmt.Println("Po zastavení udalosti:", state)
}
V reálnych systémoch môže plánovač používať zložitejšie štruktúry, časovače, správu chýb a paralelizmus na správu stavov.