Sobes.tech
Junior — Middle

Tizimda holat rejalashtiruvchisi ish faoliyatining mantiqi qanday amalga oshirilgan?

sobes.tech AI

AIdan javob

Tizimda holatlar jadvali (state machine scheduler) odatda ob'ekt yoki jarayon holatlari o'rtasidagi o'tishlarni voqealar va shartlarga asoslangan holda amalga oshiradi.

Go tilida bu quyidagilar yordamida amalga oshirilishi mumkin:

  • Holatlarni konstantalar yoki turlar sifatida aniqlash.
  • O'tishlarni boshqarish uchun switch yoki xaritalardan foydalanish.
  • Voqealarni qabul qilish va asinxronlikni boshqarish uchun kanallardan foydalanish.

Oddiy cheklangan holat mashinasining misoli:

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("Boshlang'ich holat:", state)

    state = stateMachine(state, EventStart)
    fmt.Println("Start voqeasi keyin:", state)

    state = stateMachine(state, EventStop)
    fmt.Println("Stop voqeasi keyin:", state)
}

Haqiqiy tizimlarda, rejalashtiruvchi yanada murakkab tuzilmalar, vaqt o'lchovlari, xato boshqaruvi va parallel ishlashni qo'llashi mumkin, bu holatlarni boshqarish uchun.