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.