Sobes.tech
Назад к вопросам
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.