Назад к вопросам
Альфа-Банк
Senior
3
Что такое Compare-and-Swap (CAS) в многопоточном программировании? Для чего используется?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Compare-and-Swap (CAS) — это атомарная операция, используемая в многопоточном программировании для реализации неблокирующих алгоритмов синхронизации. Она сравнивает текущее значение переменной с ожидаемым, и если они совпадают, заменяет значение на новое. В противном случае операция не меняет значение и сообщает об этом.
CAS используется для предотвращения гонок данных без использования блокировок (lock-free), что повышает производительность и масштабируемость многопоточных приложений.
Пример на Java с использованием класса AtomicInteger:
import java.util.concurrent.atomic.AtomicInteger;
public class CASExample {
private AtomicInteger value = new AtomicInteger(0);
public void increment() {
int oldValue;
int newValue;
do {
oldValue = value.get();
newValue = oldValue + 1;
} while (!value.compareAndSet(oldValue, newValue));
}
}
Здесь compareAndSet реализует CAS: если текущее значение равно oldValue, оно заменяется на newValue.