Junior — Middle
Layihələrinizdə sync.WaitGroup ilə sinxronizasiya mexanizmi istifadə etdinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, Go layihələrində tez-tez sync.WaitGroup istifadə olunur. Bu mexanizm paralel tapşırıqlar qrupunun tamamlanmasını gözləməyə imkan verir.
İş prinsipi:
WaitGroupobyekti yaradılır.- Hər goroutine başlamazdan əvvəl
Add(1)çağırılır, bu sayğacı artırır. - Goroutine daxilində iş tamamlandıqdan sonra
Done()çağırılır, bu sayğacı azaldır. - Əsas goroutine
Wait()çağırır, bu, sayğac sıfır olana qədər bloklanır.
Nümunə:
var wg sync.WaitGroup
wg.Add(2) // 2 goroutine gözlənilir
go func() {
defer wg.Done()
// birinci goroutine-in işi
}()
go func() {
defer wg.Done()
// ikinci goroutine-in işi
}()
wg.Wait() // hər ikisinin tamamlanmasını gözləyirik
Bu, paralel əməliyyatların koordinasiyası və proqramın erkən tamamlanmasının qarşısını almaq üçün faydalıdır.