Sobes.tech
Junior — Middle

Go dilində sync.Cond şərti dəyişəninin nə olduğunu və onun nə üçün istifadə edildiyini izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, sync.Cond şərtli dəyişən həyata keçirən bir quruluşdur və goroutinləri sinxronizasiya etmək üçün istifadə olunur. Bu, bir və ya bir neçə goroutinlərin müəyyən bir şərtin baş verməsini gözləməsinə və digər goroutinlərə bu şərtin dəyişdiyini bildirməsinə imkan verir.

sync.Cond-un əsas metodları:

  • Wait() — cari goroutinı başqa bir goroutin Signal() və ya Broadcast() çağırana qədər bloklayır.
  • Signal() — şərtli dəyişəndə gözləyən bir goroutinı oyadır.
  • Broadcast() — şərtli dəyişəndə gözləyən bütün goroutinləri oyadır.

İstifadə nümunəsi:

var mu sync.Mutex
cond := sync.NewCond(&mu)

// Siqnalı gözləyən goroutine
go func() {
    mu.Lock()
    cond.Wait() // siqnalı gözləyir
    // oyandıqdan sonra əməliyyatlar yerinə yetirilir
    mu.Unlock()
}()

// Siqnal göndərən goroutine
mu.Lock()
cond.Signal() // bir goroutinı oyadır
mu.Unlock()

Bu şəkildə, sync.Cond bir neçə goroutinlərin müəyyən şərtlərin baş verməsini gözlədiyi işləri koordinasiya etməyə kömək edir.