Sobes.tech
Junior — Middle

Go тилиндеги шарттуу өзгөрмө sync.Cond эмне экенин жана ал эмне үчүн колдонулат деп түшүндүрө аласызбы?

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-лердин ишин белгилүү шарттар аткарылгандан кийин координациялоого жардам берет.