Junior — Middle
Wyjaśnij, czym jest blokada (Lock) w kontekście mutexa i do czego służy.
sobes.tech AI
Odpowiedź od AI
Blokada (Lock) to mechanizm synchronizacji, który jest używany do zapobiegania jednoczesnemu dostępowi wielu wątków lub gorutyn do wspólnego zasobu, aby uniknąć warunków wyścigu i zapewnić poprawność danych.
W kontekście mutexa, blokada oznacza, że gdy jeden wątek zablokuje (lock) mutex, inne wątki próbujące go zablokować będą czekać, aż pierwszy odblokuje (unlock) mutex.
Przykład w Go:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // zablokuj mutex
counter++ // sekcja krytyczna
mu.Unlock() // odblokuj mutex
}
W ten sposób blokada gwarantuje, że tylko jeden wątek wykonuje krytyczną sekcję kodu w danym momencie.