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 и исключает состояние гонки.