Junior — Middle
Co dokładnie jest przekazywane lub używane w mechanizmie blokady (lock) w programowaniu wielowątkowym?
sobes.tech AI
Odpowiedź od AI
W mechanizmie blokady (lock) w programowaniu wielowątkowym używany jest obiekt lub prymityw synchronizacji, który zapewnia wyłączny dostęp do współdzielonego zasobu. Gdy wątek przejmuje blokadę, inne wątki próbujące ją przejąć będą czekać, aż zostanie ona zwolniona.
Czyli, pod "lock" przekazuje się lub używa:
- Stan blokady (zajęta/wolna).
- Mechanizm oczekiwania (np. kolejka wątków oczekujących na zwolnienie).
W C# słowo kluczowe lock działa na obiekcie, który służy jako znacznik blokady. Przykład:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// Kod, który ma być wykonywany tylko przez jeden wątek naraz
}
}
Tutaj, w lock, przekazywana jest referencja do obiektu _lockObj, który jest używany do zarządzania dostępem. Wewnętrznie CLR używa tego obiektu do kontroli stanu blokady.