atomic 연산

    Atomic 연산, CAS (CompareAndSwap)에 대하여, ABA 문제

    스핀락, 뮤텍스, 세마포어, 모니터 모두 하나의 Thread가 임계 영역을 Lock한 후 작업을 수행하는 절차이지만 synchronized화 하게 되면 한 개의 Thread가 해당 블락을 전체 lock(점유)하기 때문에 다른 Thread는 아무 작업을 하지 못하게 되고 이로 인해서 기다리는 상황이 발생하고 낭비가 심해진다.그래서 Non-blocking한 방법, Lock-free한 방법으로 동기화 문제를 해결하기 위한 방법이 바로 Atomic 연산이고 이 동작의 핵심 원리는 CAS (Comparre ANd Swam)에 있다.CAS (CompareAndSwap) 알고리즘이란?멀티 쓰레드 환경, 멀티 코어 환경에서 각 CPU는 메인 메모리에서 변수값을 참조하는 것이 아닌 각 CPU에서 캐시 영역에서 메모리를 ..