Ответ
Атомарная операция — это неделимая операция, которая либо выполняется полностью, либо не выполняется вовсе. Прерывание невозможно, потому что:
-
Аппаратная поддержка: Процессоры предоставляют инструкции (например,
CAS— Compare-And-Swap), которые гарантируют выполнение операции за один такт, без возможности вмешательства других потоков или прерываний. -
Гарантия целостности: Если бы операцию можно было прервать, это привело бы к состоянию гонки или повреждению данных. Например, при инкременте счетчика из двух потоков:
var counter = 0
// Без атомарности:
fun unsafeIncrement() {
counter++ // Чтение -> изменение -> запись — не атомарно!
}
Атомарные операции (AtomicInteger, synchronized) исключают такие сценарии.