Sobes.tech
Junior — Middle

Jak jest zaimplementowana logika działania planisty stanów w systemie?

sobes.tech AI

Odpowiedź od AI

Planer stanów (state machine scheduler) w systemie zazwyczaj implementuje logikę przejść między stanami obiektu lub procesu na podstawie zdarzeń i warunków.

W Go można to zrealizować za pomocą:

  • Definiowania stanów jako stałych lub typów.
  • Używania switch lub map do obsługi przejść.
  • Kanałów do odbierania zdarzeń i zarządzania asynchronicznością.

Przykład prostej maszyny stanów:

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("Stan początkowy:", state)

    state = stateMachine(state, EventStart)
    fmt.Println("Po zdarzeniu start:", state)

    state = stateMachine(state, EventStop)
    fmt.Println("Po zdarzeniu stop:", state)
}

W rzeczywistych systemach planownik może używać bardziej złożonych struktur, timerów, obsługi błędów i paralelizmu do zarządzania stanami.