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-ის მუშაობის კოორდინაციაში, რომლებიც ელოდებიან გარკვეული პირობების შესრულებას.