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 пешгирӣ мекунад ҳолатҳои рақобат ва кафолат медиҳад дурустии маълумот дар вақти иҷрои ҳамзамон.