Sobes.tech
Junior — Middle

Read-Write блокировкасы (RWMutex) деген эмне жана ал маалыматка кирүүнү башкарууда кандайча колдонулат.

sobes.tech AI

AIден жооп

Go тилиндеги Окуу-жазуу (RWMutex) блокировкасы — бул синхрондоштуруу механизми, ал бир нече goroutine'лорго маалыматтарды бир убакта окууга мүмкүндүк берет, бирок жазуу учурунда эксклюзивдүү кирүүнү камсыздайт.

  • RLock() / RUnlock() — окуу үчүн блокировка. Бир нече goroutine бир эле учурда бул блокировканы кармай алат.
  • Lock() / Unlock() — жазуу үчүн блокировка. Анын ээси болгону гана бир goroutine болушу мүмкүн, жана бул убакта эч кандай окуу уруксат берилбейт.

Бул көптөгөн окуу операциялары жана сейрек жазуу операциялары болгондо иштөө ылдамдыгын жогорулатат.

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

var rwMutex sync.RWMutex
var data int

func readData() int {
    rwMutex.RLock()
    defer rwMutex.RUnlock()
    return data
}

func writeData(val int) {
    rwMutex.Lock()
    defer rwMutex.Unlock()
    data = val
}

Бул мисалда, бир нече goroutine бир убакта readData() функциясын чакыра алат, бирок эгер writeData() чакырылса, ал бардык окуу жана жазуу операцияларын блоктойт, алардын аяктоосуна чейин.