Sobes.tech
Junior — Middle

Jak zaimplementować ograniczenie czasu wykonania operacji za pomocą context.WithTimeout w Go?

sobes.tech AI

Odpowiedź od AI

W języku Go, aby ograniczyć czas wykonywania operacji, często używa się kontekstu z limitem czasu za pomocą funkcji context.WithTimeout. Funkcja ta zwraca nowy kontekst oraz funkcję anulowania. Jeśli operacja nie zakończy się przed upływem limitu czasu, kontekst jest automatycznie anulowany.

Przykład użycia:

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

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Operacja zakończona:", result)
case <-ctx.Done():
    fmt.Println("Przekroczono limit czasu:", ctx.Err())
}

Tutaj someLongRunningOperation powinna przyjmować ctx i okresowo sprawdzać ctx.Done() dla poprawnego przerwania. Pozwala to bezpiecznie przerwać operację w przypadku przekroczenia limitu czasu.