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
WaitGroupnesnesi 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.