Junior — Middle
Jakie mechanizmy synchronizacji wątków znasz i możesz używać w swoich projektach?
sobes.tech AI
Odpowiedź od AI
W C# używa się różnych mechanizmów synchronizacji wątków:
- lock — prosty sposób blokowania sekcji krytycznej kodu.
- Mutex — blokada międzyprocesowa, przydatna, gdy trzeba synchronizować dostęp między różnymi procesami.
- Semaphore i SemaphoreSlim — pozwalają ograniczyć liczbę wątków wykonujących określony fragment kodu jednocześnie.
- Monitor — bardziej elastyczny mechanizm, na którym oparty jest lock.
- ManualResetEvent i AutoResetEvent — do sygnalizacji między wątkami.
- Kolekcje współbieżne z przestrzeni nazw System.Collections.Concurrent — zapewniają bezpieczny dostęp do kolekcji w środowisku wielowątkowym.
Przykład użycia lock:
private readonly object _lockObj = new object();
public void IncrementCounter()
{
lock(_lockObj)
{
// Sekcja krytyczna
counter++;
}
}