Sobes.tech
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.