Sobes.tech
Back to questions
Junior — Middle
63

Какие инструменты используешь для предотвращения конфликтов при одновременной работе потоков?

Answer from AI

sobes.tech AI

Для предотвращения конфликтов при одновременной работе потоков в C# используют различные механизмы синхронизации:

  • lock — простой способ блокировки критической секции кода.
  • Mutex — межпроцессный мьютекс для синхронизации между процессами.
  • Semaphore / SemaphoreSlim — ограничивает количество потоков, одновременно выполняющих код.
  • Monitor — более гибкий механизм блокировки, на котором основан lock.
  • Concurrent коллекции (например, ConcurrentDictionary) — коллекции, безопасные для многопоточного доступа.
  • Interlocked — атомарные операции над переменными.

Пример использования lock:

private readonly object _lockObj = new object();

void IncrementCounter() {
    lock(_lockObj) {
        counter++;
    }
}

Такой подход предотвращает одновременный доступ к переменной counter и исключает состояние гонки.