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

  • WaitGroup obyekti 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.