Sobes.tech
Junior — Middle

Czy możesz wymienić główne prymitywy synchronizacji dostarczane przez bibliotekę standardową?

sobes.tech AI

Odpowiedź od AI

W bibliotece standardowej C# (w przestrzeni nazw System.Threading) dostępne są następujące podstawowe prymitywy synchronizacji:

  • lock (Monitor) — zapewnia wyłączny dostęp do zasobu, blokując fragment kodu.
  • Mutex — mutex międzyprocesowy, używany do synchronizacji między procesami.
  • Semaphore i SemaphoreSlim — ograniczają liczbę wątków mogących jednocześnie uzyskać dostęp do zasobu.
  • AutoResetEvent i ManualResetEvent — zdarzenia do sygnalizacji między wątkami.
  • ReaderWriterLockSlim — pozwala wielu wątkom czytać zasób jednocześnie, ale blokuje zapis.
  • SpinLock — lekkie prymityw dla krótkich blokad bez przełączania kontekstu.

Przykład użycia lock:

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // kod, który ma być wykonywany tylko przez jeden wątek naraz
    }
}