Junior — Middle
Loyihalaringizda sync.Cond yordamida sinxronizatsiya mexanizmini qoʻlladingizmi?
sobes.tech AI
AIdan javob
Go loyihalarida, goroutinlar o'rtasida kutish va bildirishni tashkil qilish uchun sync.Cond dan foydalanardim, ayniqsa shartli sinxronizatsiya amalga oshirilishi kerak bo'lsa. Masalan, bir goroutine boshqa biror harakatni bajarishini yoki holatni o'zgartirishini kutishi kerak bo'lsa.
sync.Cond dan foydalanish misoli:
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() // kutayotgan goroutine'ga bildirish
mu.Unlock()
}()
mu.Lock()
for !ready {
cond.Wait() // signalni kutish
}
fmt.Println("Goroutine tayyor")
mu.Unlock()
}
Bu yondashuv, kanallardan ko'ra yanada nozikroq nazorat qilish uchun foydalidir.