Sobes.tech
Junior — Middle

Оё метавонед принсипи кори mutex ва истифодаи он дар барномаҳои бисёртредиро шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Мутуал изключение (Mutex) — механизми сенхронгӣ, ки барои пешгирии дастрасии ҳамзамон аз ҷониби чандирҳои зиёд ба манбаи умумӣ (масалан, тағйирёбанда ё файл) истифода мешавад. Mutex кафолат медиҳад, ки дар ҳар лаҳза танҳо як ченака метавонад соҳибии бастаро дошта бошад ва қисмати критикии кодиҳоро иҷро кунад.

Принсипи кор:

  • Ченак кӯшиш мекунад, ки mutex-ро пеш аз ворид шудан ба қисмати критикӣ ба даст орад.
  • Агар mutex озод бошад, ченак дастрасиро мегирад ва идома медиҳад.
  • Агар mutex аз ҷониби ченаки дигар ишғол шуда бошад, ченаки ҳозира бозмедорад ва интизор мешавад, ки озод шавад.
  • Пас аз анҷоми кор бо манбаъ, ченак mutex-ро озод мекунад, то дигар ченакҳо метавонанд идома диҳанд.

Дар Go, ин тавассути навъи sync.Mutex амалӣ мешавад:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()         // бастани mutex
    counter++         // қисмати критикӣ
    mu.Unlock()       // озод кардани mutex
}

Истифодаи mutex пешгирӣ мекунад ҳолатҳои рақобат ва кафолат медиҳад дурустии маълумот дар вақти иҷрои ҳамзамон.