Ответ
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).
Видео-ответы
▶
НАВАЛИВАЮ КРИНЖА НА СОБЕСЕ В MTS DIGITAL GOLANG BACKEND
▶
Mock-собеседование старшего Go разработчика из Тинькофф | Самое полное интервью
▶
Тестовое собеседование Java разработчика #14 - Владимир Дубенко
▶
Тестовое собеседование Java разработчика #8 - Виталий Телиженко
▶
Тестовое собеседование Java разработчика #7 - Владимир Крылов