Junior — Middle
Hogyan valósul meg a rendszer állapottervezőjének működési logikája?
sobes.tech MI
Válasz az MI-től
Az állapotgépek (state machine scheduler) rendszerben általában az objektum vagy folyamat állapotai közötti átmenetek logikáját valósítja meg események és feltételek alapján.
Go nyelven ez a következőképpen valósítható meg:
- Állapotok meghatározása konstansokként vagy típusokként.
- switch vagy térképek használata az átmenetek kezelésére.
- Csatornák használata események fogadására és az aszinkronitás kezelésére.
Egyszerű véges állapotgép példája:
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("Kezdeti állapot:", state)
state = stateMachine(state, EventStart)
fmt.Println("Indítás esemény után:", state)
state = stateMachine(state, EventStop)
fmt.Println("Állj esemény után:", state)
}
Valós rendszerekben a programozó összetettebb struktúrákat, időzítőket, hibakezelést és párhuzamosságot használhat az állapotok kezelésére.