Shartli o'zgaruvchi nima ekanligini va u qanday qilib oqimlarni sinxronlashtirish uchun ishlatilishini tushuntiring.
sobes.tech AI
AIdan javob
Shart shart (condition variable) — bu bir yoki bir nechta oqimlarning ma'lum bir shart bajarilishini kutishlariga imkon beradigan sinxronizatsiya mexanizmi bo‘lib, boshqa oqim ular holat o‘zgarishini xabar qiladi.
Go tilida shart shartlari sync.Cond turida amalga oshiriladi. U umumiy ma'lumotlarni himoya qiladigan mutex (sync.Mutex) bilan birga ishlaydi. Kutmoqchi bo‘lgan oqim Wait() ni chaqiradi, bu esa mutexni bo‘shatadi va boshqa oqim Signal() (bir oqimni uyg‘otish uchun) yoki Broadcast() (barcha kutayotganlarni uyg‘otish uchun) chaqirgunga qadar bloklanadi.
Foydalanish misoli:
var mu sync.Mutex
cond := sync.NewCond(&mu)
sharedDataReady := false
// Kutayotgan oqim
mu.Lock()
for !sharedDataReady {
cond.Wait() // mu ni bo‘shatadi va signalni kutadi
}
// Bu yerda sharedDataReady == true
mu.Unlock()
// Holatni o‘zgartiradigan oqim
mu.Lock()
sharedDataReady = true
cond.Signal() // yoki cond.Broadcast(), kutayotganlarni uyg‘otish uchun
mu.Unlock()
Shunday qilib, shart shartlari oqimlar o‘rtasida to‘g‘ri kutish va bildirishni tashkil qilishga yordam beradi, faol so‘rov va raqobat shartlarini oldini oladi.