Sobes.tech
Senior
48

Was ist Compare-and-Swap (CAS) in der Multithread-Programmierung? Wofür wird es verwendet?

Unternehmen wurden gefragt
Альфа-БанкАльфа-Банк

Antwort von AI

sobes.tech KI

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.