Middle — Middle+
Kaip galima kontroliuoti programos vykdymą ir valdyti jos būseną darbo metu?
sobes.tech AI
Atsakymas iš AI
Go kalboje dažnai naudojama:
- Gorutinos — lengvi srautai, leidžiantys vykdyti funkcijas lygiagrečiai.
- Kanalai — sinchronizacijai ir duomenų mainams tarp gorutinų.
- Kontekstas (context.Context) — operacijų gyvavimo ciklo valdymui, atšaukimui ir terminų perdavimui.
- sync paketas — konkurencinio prieigos valdymui prie išteklių (Mutex, WaitGroup ir kt.).
Pavyzdys, kaip naudoti kontekstą operacijai atšaukti:
ctx, cancel := context.WithCancel(context.Background())
go func() {
// po 2 sekundžių atšaukiame kontekstą
time.Sleep(2 * time.Second)
cancel()
}()
select {
case <-time.After(5 * time.Second):
fmt.Println("Operacija baigta")
case <-ctx.Done():
fmt.Println("Operacija atšaukta")
}
Taip programos būseną galima valdyti koordinuojant gorutinas, naudojant kontekstą atšaukimui ir sinchronizacijai, taip pat per užraktus ir signalus.