Sobes.tech
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.