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.