Junior — Middle
თქვენ გამოიყენეთ სინქრონიზაციის მექანიზმი sync.Cond-ის გამოყენებით თქვენს პროექტებში?
sobes.tech AI
პასუხი AI-სგან
Go პროექტებში, მე გამოვიყენე sync.Cond გორუტინებს შორის მოლოდინის და შეტყობინების ორგანიზებისთვის, როდესაც საჭირო იყო პირობიანი სინქრონიზაცია. მაგალითად, როდესაც ერთი გორუტინა უნდა ელოდოს, სანამ მეორე შეასრულებს გარკვეულ მოქმედებას ან შეცვლის მდგომარეობას.
sync.Cond-ის გამოყენების მაგალითი:
package main
import (
"fmt"
"sync"
"time"
)
func main() {
mu := sync.Mutex{}
cond := sync.NewCond(&mu)
ready := false
go func() {
time.Sleep(time.Second)
mu.Lock()
ready = true
cond.Signal() // შეტყობინება მოლოდინში გორუტინს
mu.Unlock()
}()
mu.Lock()
for !ready {
cond.Wait() // სიგნალის მოლოდინი
}
fmt.Println("Goroutine მზადაა")
mu.Unlock()
}
ეს მიდგომა სასარგებლოა, როდესაც საჭიროა უფრო ზუსტი კონტროლი მდგომარეობასა და სინქრონიზაციაზე, ვიდრე უბრალოდ არხების გამოყენება.