Sobes.tech
Junior — Middle

Cum este implementată logica funcționării planificatorului de stări în sistem?

sobes.tech AI

Răspuns de la AI

Planificatorul de mașini de stare (state machine scheduler) într-un sistem implementează de obicei logica tranzițiilor între stările unui obiect sau proces pe baza evenimentelor și condițiilor.

În Go, acest lucru poate fi realizat prin:

  • Definirea stărilor ca constante sau tipuri.
  • Utilizarea switch sau mapări pentru gestionarea tranzițiilor.
  • Canale pentru primirea evenimentelor și gestionarea asincronicității.

Exemplu de o mașină de stare finită simplă:

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("Starea inițială:", state)

    state = stateMachine(state, EventStart)
    fmt.Println("După evenimentul de start:", state)

    state = stateMachine(state, EventStop)
    fmt.Println("După evenimentul de stop:", state)
}

În sistemele reale, planificatorul poate folosi structuri mai complexe, temporizatoare, gestionarea erorilor și paralelism pentru a gestiona stările.