Интересно отметить, что некоторые процессоры не обеспечивают сравнение-обмен, а вместо этого предоставляют некоторые другие инструкции («Загрузить связанные» и «Условное хранилище»), которые можно использовать для синтеза, к сожалению, названного сравнения-и-сравнения.swap (название звучит так, как будто оно должно быть похоже на «сравнение-обмен», но на самом деле его следует называть «сравнить и хранить», поскольку оно выполняет сравнение, сохраняет, если значение совпадает, и указывает, соответствует ли значение и хранилище быловыполнила).Инструкции не могут синтезировать семантику сравнения-обмена (которая предоставляет значение, прочитанное в случае сбоя сравнения), но в некоторых случаях могут избежать проблемы ABA, которая присутствует в Compare-Exchange.Многие алгоритмы описаны в терминах операций «CAS», потому что они могут использоваться в обоих стилях CPU.
Инструкция «Load Linked» говорит процессору прочитать ячейку памяти и посмотреть каким-то образом, чтобы увидеть,это может быть написано.Инструкция «Условное хранилище» дает указание процессору записать ячейку памяти только в том случае, если после последней операции «Load Linked» ничего не могло быть записано.Обратите внимание, что определение может быть пессимистичным;например, обработка прерывания может сделать недействительной последовательность «Load-Linked» / «Conditional Store».Аналогично, в многопроцессорной системе последовательность LL / CS может быть признана недействительной другим ЦП, осуществляющим доступ к местоположению в той же строке кэша, что и отслеживаемое местоположение, даже если фактическое отслеживаемое местоположение не было затронуто.При обычном использовании LL / CS используются очень близко друг к другу, с повторным циклом, так что ошибочные аннулирования могут немного замедлить ход событий, но не вызовут особых проблем.