여러 스레드가 동작하는 환경에서 데이터의 안정성을 보장하는 방법으로 락을 사용하는 대신 저수준의 하드웨어에서 제공하는 CAS (compare-and-swap) 명령을 사용하는 넌블로킹 알고리즘을 다룬다.

15.1 락의 단점

15.2 병렬 연산을 위한 하드웨어적인 지원

배타적인 락 방법은 보수적인 동기화 기법으로, 일단 값을 변경하고 다른 스레드의 간섭 없이 값이 제대로 변경하는 방법이 훨씬 효율적으로 동작할 수 있는 낙관적인 방법이다.

프로세서는 공유된 변수를 놓고 동시에 여러 작업을 해야하는 상황을 간단하게 관리할 수 있는 명령어를 제공한다.

15.2.1 CAS

CAS 연산에는 3개의 인자를 넘겨주는데, V 위치에 있는 값이 A 와 같은 경우에 B 로 변경하는 단일 연산이다.

만약 이전 값이 A 와 달랐다면 아무런 동작도 하지 않고, 성공/실패 시에 상관없이 현재 V 의 값을 리턴한다.

<aside> 💡 풀어서 이야기하면 V 에 들어 있는 값이 A 라고 생각되며,

</aside>