
ABA 문제란?어떤 스레드가 변수의 값을 A라고 확인하고, 나중에 그 값이 여전히 A라서 안전하다고 착각해 연산을 진행했는데…사실은 그 사이에 다른 스레드가 A → B → A로 바꿔치기한 경우 발생하는 문제.즉, 값은 다시 A라서 “겉보기엔 변화 없음”처럼 보이지만, 실제로는 상태가 바뀌었고 의도하지 않은 결과가 생김. Lock-Free Stack (스택 pop/push)struct Node { int data; Node* next;};std::atomic head; Thread T1 (Pop)head를 읽음 → Node A 가리킴A->next를 확인 → Node BCAS로 head를 A에서 B로 바꾸려 함Thread T2 (Pop+Push)T1이 CAS하기 전에 실행A를 pop → head는..