Kod musi być także poprawny, inaczej może się zatrzymać w nieskończonej pętli.
W systemach wieloprocesorowych zwykle nie jest możliwe zablokowanie przerwań na wszystkich procesorach w tym samym czasie. A nawet jeśli byłoby to możliwe to dwa lub więcej procesorów mogłoby próbować czytać i modyfikować tę samą daną w tym samym czasie, co nie gwarantowałoby niepodzielności. Instrukcja CAS rozwiązuje takie kolizje między procesorami.
Rozszerzenia Z uwagi na to, że CAS operuje na danych, których rozmiar nie przekracza zmiennych typu wskaźnikowego, a większość algorytmów synchronizacji nieblokujących wymaga umożliwienia zmieniania wielu lokacji, zostały opracowane różne rozszerzenia.
Podwójny CAS porównuje dwie niepowiązane lokacje z dwoma oczekiwanymi wartościami, i jeśli obie są równe, umieszczana są w nich dwie nowe wartości. Taka instrukcja istnieje tylko na procesorach Motorola 680x0. CAS podwójnej szerokości porównujący lokację zdolną pomieścić dwie zmienne typu wskaźnikowego. Na późniejszych procesorach x86 dostępne są instrukcje CMPXCHG8B i CMPXCHG16B, które tę funkcję realizują. Porównanie pojedynczej szerokości, a zamiana podwójnej szerokości.