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.