Sobes.tech
Middle — Middle+

Kako se može kontrolisati izvršavanje programa i upravljati njegovim stanjem tokom rada?

sobes.tech АИ

Одговор од АИ

U Go jeziku, za kontrolu izvršavanja programa i upravljanje njegovim stanjem tokom rada često se koriste:

  • Gorutine — lagani tokovi koji omogućavaju paralelno izvršavanje funkcija.
  • Kanal — za sinhronizaciju i razmenu podataka između gorutina.
  • Kontekst (context.Context) — za upravljanje vremenom trajanja operacija, otkazivanje i prenos rokova.
  • Paket sync — za upravljanje konkurentnim pristupom resursima (Mutex, WaitGroup itd.).

Primer korišćenja konteksta za otkazivanje operacije:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    // nakon 2 sekunde, otkazujemo kontekst
    time.Sleep(2 * time.Second)
    cancel()
}()

select {
case <-time.After(5 * time.Second):
    fmt.Println("Operacija završena")
case <-ctx.Done():
    fmt.Println("Operacija otkazana")
}

Na ovaj način, upravljanje stanjem programa se postiže koordinacijom gorutina, korišćenjem konteksta za otkazivanje i sinhronizaciju, kao i putem mehanizama zaključavanja i signala.