Sobes.tech
Junior — Middle

Go'da context.WithTimeout kullanarak bir işlemin çalışma süresi sınırını nasıl uygularsınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, bir işlemin çalışma süresini sınırlamak için sıklıkla context.WithTimeout fonksiyonu kullanılır. Bu fonksiyon yeni bir bağlam ve iptal fonksiyonu döner. Eğer işlem zaman aşımından önce tamamlanmazsa, bağlam otomatik olarak iptal edilir.

Kullanım örneği:

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

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("İşlem tamamlandı:", result)
case <-ctx.Done():
    fmt.Println("Zaman aşımı aşıldı:", ctx.Err())
}

Burada, someLongRunningOperation ctx'i kabul etmeli ve doğru şekilde iptal etmek için ctx.Done()'yu periyodik olarak kontrol etmelidir. Bu, zaman aşımında işlemi güvenli bir şekilde iptal etmeyi sağlar.