Sobes.tech
Back to questions
Junior — Middle
65

Какие механизмы синхронизации потоков вы знаете и можете использовать в своих проектах?

Companies where asked
Почтатех
OZONOZON
AstonAston
Бренд Монитор
appfox

Answer from AI

sobes.tech AI

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

  • lock — простой способ блокировки критической секции кода.
  • Mutex — межпроцессная блокировка, полезна, когда нужно синхронизировать доступ между разными процессами.
  • Semaphore и SemaphoreSlim — позволяют ограничить количество потоков, одновременно выполняющих определённый участок кода.
  • Monitor — более гибкий механизм, на котором основан lock.
  • ManualResetEvent и AutoResetEvent — для сигнализации между потоками.
  • Concurrent коллекции из пространства имён System.Collections.Concurrent — обеспечивают потокобезопасный доступ к коллекциям.

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

private readonly object _lockObj = new object();

public void IncrementCounter()
{
    lock(_lockObj)
    {
        // Критическая секция
        counter++;
    }
}