Junior — Middle
Могу ли се унутар једне функције истовремено применити више механизама блокирања (Mutex)?
sobes.tech АИ
Одговор од АИ
Да, у језику Go можете користити више mutex (Mutex) унутар исте функције истовремено. Ово је често случај када је потребно заштитити различите ресурсе или делове података који нису повезани међусобно. Главно је избегавати међусобна блокирања (deadlock), када један mutex чека да се ослободи други, а тај други, пак, чека први.
Пример коришћења више mutex-а:
var mu1 sync.Mutex
var mu2 sync.Mutex
func updateResources() {
mu1.Lock()
defer mu1.Unlock()
// Рад са првим ресурсом
mu2.Lock()
defer mu2.Unlock()
// Рад са другим ресурсом
}
Да бисте избегли deadlock-ове, препоручује се да увек закључавате mutex-е у истом редоследу на свим местима у коду.