Sobes.tech
Junior — Middle

Бир функциянын ичинде бир убакта бир нече блоктоо механизми (Mutex) колдонуу мүмкүнбү?

sobes.tech AI

AIден жооп

Ооба, Go тилинде бир функциянын ичинде бир нече mutex (Mutex) бир убакта колдонулушу мүмкүн. Бул көбүнчө, бири-бири менен байланышпаган ар башка ресурстарды же маалымат бөлүктөрүн коргоо керек болгондо кездешет. Негизги максат — бири-бирин күтүп турган deadlock (өлүмгө учурау) абалдарынан качуу, мисалы, бир mutex башкасынын бошотулушун күтүп жатса, ал эми экинчиси биринчи mutexти күтүп жатса.

Көп mutex колдонуу мисалы:

var mu1 sync.Mutex
var mu2 sync.Mutex

func updateResources() {
    mu1.Lock()
    defer mu1.Unlock()
    // Биринчи ресурс менен иштөө

    mu2.Lock()
    defer mu2.Unlock()
    // Экинчи ресурс менен иштөө
}

Deadlock-тордон качуу үчүн, mutex-терди ар дайым бир эле тартипте коддун бардык жерлеринде блоктоо сунушталат.