Es interesante observar que algunos procesadores no proporcionan un intercambio de comparación, sino que proporcionan algunas otras instrucciones ("Load Linked" y "Conditional Store") que se pueden usar para sintetizar la comparación desafortunadamente llamada-y -swap (el nombre suena como debería ser similar a "compare-exchange" pero realmente debería llamarse "compare-and-store" ya que hace la comparación, almacena si el valor coincide, e indica si el valor coincide y la tienda se realizó). Las instrucciones no pueden sintetizar la semántica de cambio de comparación (que proporciona el valor leído en caso de que falle la comparación), pero en algunos casos puede evitar el problema de ABA presente en Compare-Exchange. Muchos algoritmos se describen en términos de operaciones "CAS" porque se pueden usar en ambos estilos de CPU.
Una instrucción "Load Linked" le dice al procesador que lea una ubicación en la memoria y mire de alguna manera para ver si se puede escribir. Una instrucción de "Almacenamiento condicional" instruye al procesador para que escriba una ubicación de memoria solo si nada puede haberla escrito desde la última operación de "Cargar Vinculado". Tenga en cuenta que la determinación puede ser pesimista; el procesamiento de una interrupción, por ejemplo, puede invalidar una secuencia "Vinculada a la carga"/"Almacén condicional". Del mismo modo, en un sistema multiprocesador, una secuencia de LL/CS puede ser invalidada por otra CPU que accede a una ubicación en la misma línea de caché que la ubicación que se está viendo, incluso si no se tocó la ubicación real que se está mirando. En el uso típico, LL/CS se utilizan muy juntos, con un ciclo de reintento, por lo que las invalidaciones erróneas pueden desacelerar un poco pero no causarán muchos problemas.
Normalmente se compara y se intercambia un valor con una ubicación de memoria, parece que se habla de _dos ubicaciones de memoria que es más compleja. ¿Es esto definitivamente lo que necesitas? –
Lo siento, me refería a una sola ubicación de memoria, lo aclararé. – axel22