Sobes.tech
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.