Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ, რა არის პირობიანი ცვლადი sync.Cond ენის Go-ში და რა მიზნით გამოიყენება?

sobes.tech AI

პასუხი AI-სგან

Go ენის ფარგლებში, sync.Cond არის სტრუქტურა, რომელიც ახორციელებს პირობით ცვლადს და გამოიყენება goroutine-ების სინქრონიზაციისთვის. იგი საშუალებას აძლევს ერთ ან რამდენიმე goroutine-ს დაელოდოს გარკვეული პირობების შესრულებას და სხვა goroutine-ებს აცნობოს, რომ ეს პირობები შეიცვალა.

sync.Cond-ის ძირითადი მეთოდები:

  • Wait() — ბლოკავს მიმდინარე goroutine-ს, სანამ სხვა goroutine-ი არ გამოიძახებს Signal() ან Broadcast().
  • Signal() — იღვიძებს ერთ goroutine-ს, რომელიც ელოდება პირობით ცვლადზე.
  • Broadcast() — იღვიძებს ყველა goroutine-ს, რომელიც ელოდება პირობით ცვლადზე.

გამოყენების მაგალითი:

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

// Goroutine, რომელიც ელოდება სიგნალს
go func() {
    mu.Lock()
    cond.Wait() // ელოდება სიგნალს
    // გაღვიძების შემდეგ, ასრულებს მოქმედებებს
    mu.Unlock()
}()

// Goroutine, რომელიც აგზავნის სიგნალს
mu.Lock()
cond.Signal() // იღვიძებს ერთ goroutine-ს
mu.Unlock()

ამ გზით, sync.Cond ეხმარება რამდენიმე goroutine-ის მუშაობის კოორდინაციაში, რომლებიც ელოდებიან გარკვეული პირობების შესრულებას.