Middle — Middle+
Cum se poate controla execuția programului și gestiona starea sa în timpul funcționării?
sobes.tech AI
Răspuns de la AI
În Go, pentru controlul execuției programului și gestionarea stării sale în timpul funcționării, se utilizează adesea:
- Gorutine — fire ușoare care permit executarea funcțiilor în paralel.
- Canale — pentru sincronizare și schimb de date între gorutine.
- Context (context.Context) — pentru gestionarea duratei de viață a operațiunilor, anulări și transmiterea termenelor limită.
- Pachetul sync — pentru gestionarea accesului concurent la resurse (Mutex, WaitGroup etc.).
Exemplu de utilizare a contextului pentru anularea unei operațiuni:
ctx, cancel := context.WithCancel(context.Background())
go func() {
// după 2 secunde, anulăm contextul
time.Sleep(2 * time.Second)
cancel()
}()
select {
case <-time.After(5 * time.Second):
fmt.Println("Operațiunea s-a încheiat")
case <-ctx.Done():
fmt.Println("Operațiunea a fost anulată")
}
Astfel, controlul stării programului se realizează prin coordonarea gorutine, utilizarea contextului pentru anulări și sincronizare, precum și prin mecanisme de blocare și semnale.