Sobes.tech
Junior — Middle

Шарттуу өзгөрмө деген эмне жана ал кантип жиптердин синхрондошуусунда колдонулат?

sobes.tech AI

AIден жооп

Шарт өзгөрмөсү (condition variable) — бул бир нече же бир нече иштөө агымдарына белгилүү бир шарттын ишке ашуусун күтүүгө мүмкүндүк берген синхрондоштуруу механизми, ал эми башка агым аларга абалдын өзгөрүшү тууралуу кабар берет.

Go тилинде шарт өзгөрмөлөрү sync.Cond тиби аркылуу ишке ашырылат. Ал жалпы маалыматтарды коргоочу mutex (sync.Mutex) менен бирге иштейт. Күтүп жаткан агым Wait() деп чакырат, ал mutexти бошотуп, башка агым Signal() (бир агымды ойготуу үчүн) же Broadcast() (бардык күтүп жаткан агымдарды ойготуу үчүн) чакырганча токтоп турат.

Колдонуу мисалы:

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

// Күтүп жаткан агым
mu.Lock()
for !sharedDataReady {
    cond.Wait() // mu'ну бошотуп, сигналды күтөт
}
// Мында sharedDataReady == чын
mu.Unlock()

// Абалды өзгөрткөн агым
mu.Lock()
sharedDataReady = true
cond.Signal() // же cond.Broadcast(), күтүп жаткандарды ойготуу үчүн
mu.Unlock()

Ушул жол менен шарт өзгөрмөсү агымдар арасында туура күтүүнү жана кабарлоону уюштурууга жардам берет, активдүү сканерлөө жана жарыш шарттарынан сактайт.