Что такое CAS

«Что такое CAS» — вопрос из категории Golang, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

CAS (Compare-And-Swap) — это атомарная операция, используемая для безопасного изменения значения в многопоточной среде. Она сравнивает текущее значение переменной с ожидаемым и, если они совпадают, заменяет его на новое. Возвращает true, если замена прошла успешно.

Пример в Go с sync/atomic:

var value int64 = 42
newValue := int64(100)
swapped := atomic.CompareAndSwapInt64(&value, 42, newValue)
// swapped = true, value = 100

Ключевые особенности:

  • Атомарность гарантируется на уровне процессора
  • Избегает блокировок (lock-free)
  • Может привести к livelock в случае высокой конкуренции

Используется в реализациях конкурентных структур данных (например, каналы в Go).