Sobes.tech
Junior — Middle

Goroutine, bağlam aracılığıyla tamamlandığını nasıl anlar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Goroutine, bağlam aracılığıyla bir kanal kullanarak tamamlanma sinyali alır, bu da context.Context nesnesi sağlar. Genellikle Done() yöntemi kullanılır, bu da bağlam iptal edildiğinde kapanan bir kanal döndürür. Goroutine, bu kanalı döngü veya select içinde dinleyebilir ve kapanışına tepki verebilir; bu, işlemin tamamlandığı veya iptal edildiği sinyalidir.

Örnek:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    select {
    case <-ctx.Done():
        // Bağlam iptal edildi, işlemi sonlandır
        fmt.Println("Goroutine tamamlandı")
        return
    // diğer durumlar
    }
}()

// daha sonra, tamamlamayı sinyal etmek için cancel() çağrılır
cancel()