Sobes.tech
Junior — Middle

Jak je v systému implementována logika práce plánovače stavů?

sobes.tech AI

Odpověď od AI

Plánovač stavů (state machine scheduler) v systému obvykle implementuje logiku přechodů mezi stavy objektu nebo procesu na základě událostí a podmínek.

V jazyce Go lze toto realizovat pomocí:

  • Definice stavů jako konstant nebo typů.
  • Použití switch nebo map pro zpracování přechodů.
  • Kanálů pro přijímání událostí a správu asynchronnosti.

Příklad jednoduché konečné 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čáteční stav:", state)

    state = stateMachine(state, EventStart)
    fmt.Println("Po start události:", state)

    state = stateMachine(state, EventStop)
    fmt.Println("Po stop události:", state)
}

V reálných systémech může plánovač používat složitější struktury, časovače, správu chyb a paralelismus pro správu stavů.