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
}
}