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