Junior — Middle
Bir programda çalışan tüm goroutinelerin güvenli bir şekilde tamamlanmasını nasıl sağlayabilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, dışarıdan zorla bir goroutine'yi sonlandırmanın yerleşik bir yolu yoktur. Tüm çalışan goroutine'lerin tamamlanmasını garantilemek için genellikle sync.WaitGroup kullanılır.
Çalışma prensibi:
- Her goroutine başlatılmadan önce
wg.Add(1)çağrılır. - Goroutine içinde, sonunda
wg.Done()çağrılır. - Ana fonksiyonda
wg.Wait()çağrılır, bu da sayaç sıfıra ulaşana kadar yürütmeyi engeller.
Örnek:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// goroutine işi
}()
wg.Wait() // tüm goroutine'lerin tamamlanmasını bekle
Bu şekilde, program tüm goroutine'lerin tamamlanmasını garantileyerek devam eder veya sona erer.