# L12 - zarys teoretyczny (bez wyprowadzenia wzorów) ## Problem ABA Problem "ABA" to rodzaj błędu synchronizacji. Dotyczy zwyczajowo operacji CAS (compare-and-set). Bazuje on na (błędnym) założeniu w niektórych miejscach programu, że jeżeli wartość jest taka sama jak wcześniej to nie nastąpiła dla niej żadna zmiana. Tj. może zajść że mimo braku zmiany wartości pojedynczej referencji system zmienił jej znaczenie. W szczególności przykład opowiedziany na wykładzie dotyczył programu, który dla współbieżnej kolejki używa "node'ów", które nie są usuwane przy operacji deque (tylko umieszczane we wspólnej puli pustych wierzchołków). Może więc zajść jak poniżej: ![](https://i.imgur.com/5lZs2Pa.png)