Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, jakie rodzaje blokad istnieją i jak działają w programowaniu wielowątkowym?

sobes.tech AI

Odpowiedź od AI

W programowaniu wielowątkowym istnieją różne typy blokad, które pomagają synchronizować dostęp do zasobów współdzielonych:

  • Mutex (Mutual Exclusion) — zapewnia wyłączny dostęp do zasobu. Tylko jeden wątek może go zdobyć w danym momencie.
  • Rekursywny mutex — pozwala temu samemu wątkowi na wielokrotne zdobycie blokady bez wzajemnego blokowania się.
  • Blokada odczytu-zapisu (Read-Write Lock) — pozwala wielu wątkom na jednoczesne czytanie zasobu, ale zapis jest możliwy tylko wyłącznie.
  • Semafor — ogranicza liczbę wątków, które mogą jednocześnie uzyskać dostęp do zasobu.
  • Spinlock (aktywny oczekiwacz) — wątek w pętli sprawdza dostępność blokady, nie przechodząc w stan oczekiwania.

Przykład użycia mutexa w Swift:

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Sekcja krytyczna
    lock.unlock()
}

Wybór typu blokady zależy od zadania oraz wymagań dotyczących wydajności i bezpieczeństwa.