Sobes.tech
Junior — Middle

Go tilida sync.Cond shartli o'zgaruvchasi nima va u nima uchun ishlatiladi, tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Go tilida sync.Cond — bu shartli o'zgaruvchi amalga oshiradigan tuzilma bo'lib, goroutinlarni sinxronlashtirish uchun ishlatiladi. U bir yoki bir nechta goroutinlarni muayyan shartning bajarilishini kutishga imkon beradi va boshqa goroutinlarga bu shart o'zgarganligini bildirish imkonini beradi.

sync.Cond ning asosiy metodlari:

  • Wait() — hozirgi goroutinani boshqa goroutinlar Signal() yoki Broadcast() chaqirilguncha bloklaydi.
  • Signal() — shartli o'zgaruvchida kutayotgan bir gorutinni uyg'otadi.
  • Broadcast() — shartli o'zgaruvchida kutayotgan barcha goroutinlarni uyg'otadi.

Foydalanish misoli:

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

// Signal kutayotgan goroutine
go func() {
    mu.Lock()
    cond.Wait() // signalni kutadi
    // uyg'onganidan so'ng, harakatlarni bajaradi
    mu.Unlock()
}()

// Signal yuboradigan goroutine
mu.Lock()
cond.Signal() // bir goroutinini uyg'otadi
mu.Unlock()

Shu tarzda, sync.Cond bir nechta goroutinlarning muayyan shartlar bajarilishini kutayotgan ishlarini muvofiqlashtirishga yordam beradi.