Junior — Middle
Използвали ли сте механизъм за песимистично блокиране в проектите си?
sobes.tech AI
Отговор от AI
Да, в проекти на Go съм използвал песимистично блокиране, когато е необходимо да се гарантира изключителен достъп до ресурс.
Песимистичното блокиране предполага, че при работа с общи данни блокираме достъпа до други горутини, докато операцията не приключи, за да избегнем конфликти.
В Go обикновено се използват:
sync.Mutex— мютекс за взаимно изключване.sync.RWMutex— за разделяне на блокировките за четене и писане.
Пример за използване на sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Този подход помага да се избегнат състезателни условия, но може да намали паралелизма, затова е важно да се използват блокировките внимателно.