2013-03-27 3 views

ответ

1

В заявлении: атомная транзакция - это самый маленький набор операций для выполнения необходимых шагов. Либо все необходимые операции выполняются (успешно), либо происходит сбой атомной транзакции.

Атомная операция обычно не имеет ничего общего с транзакциями. Насколько мне известно, это происходит из аппаратного программирования, где набор операций (или один) может быть немедленно решён.

1

Чтобы получить более широкую картину, вы посмотрите на может:

Некоторые цитаты из указанных выше ресурсов:

О базе данных асы:

В атомной сделке, ряд операций с базами данных либо все происходят, или ничего не происходит. Гарантия атомарности предотвращает обновление базы данных, происходящую только частично, что может привести к большим проблемам , чем отказ от целой серии. Другими словами, атомарность означает неделимость и неприводимость.

О программировании:

В параллельном программировании, операции (или набор операций) является атомным, линеаризуема, неделимыми или источник бесперебойного, если она, как представляется, остальную часть системы происходить мгновенно. Atomicity является гарантией изоляции от параллельных процессов. Кроме того, атомарные операции обычно имеют определение «успешное или неудачное» - они либо успешно изменяют состояние системы, либо не имеют видимого эффекта .

Я видел слово сделки используется чаще для баз данных и работы в программировании, особенно в программировании на уровне ядра.

1

Концепция Atomity распространена между атомными транзакциями и атомными операциями, но они обычно связаны с разными доменами.

Атомные транзакции связаны с операциями с базой данных, где набор действий должен быть полным, или НИ ОДИН из них не закончен. Например, если кто-то заказывает рейс, вы хотите как получить платеж, так и зарезервировать место ИЛИ не делать ни того, ни другого. Если одному из них было позволено преуспеть, а другое не удалось, база данных была бы непоследовательна.

Атомные операции, с другой стороны, обычно связаны с низкоуровневым программированием в отношении многопроцессорных или многопоточных приложений и аналогичны критическим разделам. Например, если два потока одновременно получать доступ и изменять ту же переменную, каждый поток проходит через следующие этапы:

  1. прочитать переменную из хранилища в локальную память.
  2. Измените значение в локальной памяти.
  3. Запишите измененное значение обратно в исходное место хранения.

Но в многопоточной системе прерывание или другой переключатель контекста может произойти после того, как первый процесс прочитал значение, но не записал его обратно. Второй процесс (или прерывание) затем будет считывать и изменять значение OLD и записывать его модифицированное значение обратно в хранилище. Когда первый процесс снова включен, он не знает, что что-то могло измениться, поэтому он записывает свое изменение в исходное значение. Следовательно, операция, которую второй процесс выполнил с переменной, будет потеряна. Если операция атома, она может быть завершена без прерывания с момента ее начала. Обычно это выполняется с использованием примитивов аппаратного уровня, таких как Test-and-Set или Compare-and-Swap.

Смежные вопросы