Sobes.tech
Senior
61

¿Qué es Compare-and-Swap (CAS) en programación multihilo? ¿Para qué se utiliza?

Empresas donde se preguntó
Альфа-БанкАльфа-Банк

Respuesta de la IA

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.