Sobes.tech
Junior — Middle

Projelerinde sync.WaitGroup kullanarak senkronizasyon mekanizması uyguladınız mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, Go projelerinde sıklıkla sync.WaitGroup kullanılır. Bu mekanizma, paralel görevlerin tamamlanmasını beklemek için kullanılır.

Çalışma prensibi:

  • Bir WaitGroup nesnesi oluşturulur.
  • Her goroutine başlatılmadan önce Add(1) çağrılır, böylece sayaç artırılır.
  • Goroutine içinde işi tamamladıktan sonra Done() çağrılır, bu da sayacı azaltır.
  • Ana goroutine Wait() çağırır, bu da sayaç sıfır olana kadar bloklar.

Örnek:

var wg sync.WaitGroup

wg.Add(2) // 2 goroutine bekleniyor

go func() {
    defer wg.Done()
    // ilk goroutine'nin işi
}()

go func() {
    defer wg.Done()
    // ikinci goroutine'nin işi
}()

wg.Wait() // her ikisi de tamamlanana kadar bekle

Bu, paralel işlemleri koordine etmek ve programın erken bitmesini önlemek için kullanışlıdır.