Sobes.tech
Back to questions
Junior — Middle
71

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

Answer from AI

sobes.tech AI

В многопоточной среде для устранения конфликтов при одновременном доступе к одному объекту применяют различные методы синхронизации:

  • lock (монитор) — ключевое слово lock в C# позволяет захватить блок кода, чтобы только один поток мог его выполнять одновременно.

  • Mutex — объект, который может использоваться для синхронизации между потоками и даже между процессами.

  • Semaphore и SemaphoreSlim — позволяют ограничить количество потоков, одновременно получающих доступ к ресурсу.

  • Monitor — более гибкий механизм, на котором основан lock, с возможностью ожидания и уведомления потоков.

  • Interlocked — класс для атомарных операций над переменными (например, инкремент, декремент), что предотвращает состояние гонки без блокировок.

  • ReaderWriterLockSlim — позволяет нескольким потокам читать данные одновременно, но блокирует запись, пока идет чтение.

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

private readonly object _syncObj = new object();
private int _counter = 0;

public void Increment()
{
    lock (_syncObj)
    {
        _counter++;
    }
}