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()