Что такое interlocked

«Что такое interlocked» — вопрос из категории Многопоточность, который задают на 28% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Interlocked — это класс в .NET, предоставляющий атомарные операции для работы с переменными в многопоточной среде. Он гарантирует, что операции (инкремент, декремент, обмен, сравнение) выполняются как единое целое без вмешательства других потоков.

Пример:

int counter = 0;
Interlocked.Increment(ref counter); // Атомарное увеличение на 1
Interlocked.Exchange(ref counter, 10); // Атомарная установка значения

Особенности:

  • Не требует блокировки (lock), но подходит только для простых операций.
  • Работает с int, long, object и др.
  • Гарантирует порядок выполнения операций между потоками (memory barrier).

Когда использовать:

  • Для простых операций (счётчики, флаги).
  • Когда lock избыточен и нужна максимальная производительность.

Ограничения:

  • Не подходит для сложных многошаговых операций — тут нужен lock или другие同步примитивы.