Sobes.tech
Junior — Middle

Cum se implementează o limitare a timpului de execuție a unei operații folosind context.WithTimeout în Go?

sobes.tech AI

Răspuns de la AI

În Go, pentru a limita timpul de execuție al unei operații, se folosește adesea un context cu timeout prin funcția context.WithTimeout. Aceasta returnează un nou context și o funcție de anulare. Dacă operația nu se finalizează înainte de expirarea timeout-ului, contextul este automat anulat.

Exemplu de utilizare:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Operație finalizată:", result)
case <-ctx.Done():
    fmt.Println("Timeout depășit:", ctx.Err())
}

Aici, someLongRunningOperation trebuie să accepte ctx și să verifice periodic ctx.Done() pentru o întrerupere corectă. Acest lucru permite anularea sigură a operației în cazul timeout-ului.