Junior — Middle
Kuidas on süsteemis oleku planeerija töö loogika rakendatud?
sobes.tech AI
Vastus AI-lt
Oleku oleku (state machine scheduler) süsteemis raksturo bieži stāvokļu pāreju loģiku objekta vai procesa stāvokļiem, balstoties uz notikumiem un nosacījumiem.
Go valodā to var īstenot ar:
- Stāvokļu definēšanu kā konstanti vai tipu.
- Pāreju apstrādei izmantojot switch vai kartes.
- Kanālus notikumu saņemšanai un asinhronai pārvaldībai.
Vienkāršs beigu stāvokļu mašīnas piemērs:
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("Algusolek:", state)
state = stateMachine(state, EventStart)
fmt.Println("Pēc sākuma notikuma:", state)
state = stateMachine(state, EventStop)
fmt.Println("Pēc apstāšanās notikuma:", state)
}
Reālos sistēmos plānotājs var izmantot sarežģītākas struktūras, taimerus, kļūdu pārvaldību un paralēlismu, lai pārvaldītu stāvokļus.