Sobes.tech
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.