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.