Ответ
Interlocked — это класс в .NET, предоставляющий атомарные операции для работы с переменными в многопоточной среде. Он гарантирует, что операции (инкремент, декремент, обмен, сравнение) выполняются как единое целое без вмешательства других потоков.
Пример:
int counter = 0;
Interlocked.Increment(ref counter); // Атомарное увеличение на 1
Interlocked.Exchange(ref counter, 10); // Атомарная установка значения
Особенности:
- Не требует блокировки (
lock), но подходит только для простых операций. - Работает с
int,long,objectи др. - Гарантирует порядок выполнения операций между потоками (memory barrier).
Когда использовать:
- Для простых операций (счётчики, флаги).
- Когда
lockизбыточен и нужна максимальная производительность.
Ограничения:
- Не подходит для сложных многошаговых операций — тут нужен
lockили другие同步примитивы.