Sobes.tech
Junior — Middle

Come viene implementata la logica del pianificatore di stati nel sistema?

sobes.tech AI

Risposta dell'AI

Il pianificatore di macchine a stati (state machine scheduler) in un sistema implementa generalmente la logica delle transizioni tra stati di un oggetto o processo basata su eventi e condizioni.

In Go, questo può essere realizzato tramite:

  • Definizione degli stati come costanti o tipi.
  • Uso di switch o map per gestire le transizioni.
  • Canali per ricevere eventi e gestire l'asincronia.

Esempio di una macchina a stati finiti semplice:

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("Stato iniziale:", state)

    state = stateMachine(state, EventStart)
    fmt.Println("Dopo l'evento di avvio:", state)

    state = stateMachine(state, EventStop)
    fmt.Println("Dopo l'evento di stop:", state)
}

Nei sistemi reali, il pianificatore può usare strutture più complesse, timer, gestione degli errori e parallelismo per gestire gli stati.