더북(TheBook)

예를 들어 a에 무조건 10을 넣거나 a에서 값을 가져온다고 칩시다. 지금 가져온 값이 로컬 변수로 존재하는데 과연 a는 계속해서 가져온 로컬 변수 값을 보장할까요? 그렇지 않습니다.

a의 주소를 매번 액세스하면 되는 것 아니냐?”라고 생각할 수도 있겠습니다만, CPU와 컴파일러는 코드 최적화와 실행 속도 극대화를 위해서 내부적으로 복잡한 일을 합니다. 캐시(cache) 처리나 실행 순서 변경 등을 예로 들 수 있습니다. 이러한 문제가 없다 하더라도 1.16절에서 다룰 잠금의 전염성 문제가 있습니다. 따라서 원자 조작 함수 중에는 ‘단순 읽기’ 또는 ‘단순 쓰기’ 연산이 있을 필요가 없습니다.

뮤텍스나 임계 영역은 운영체제에서 제공하는 기능으로, 내부에서는 원자 조작을 활용하고 있습니다. 윈도에서 임계 영역 잠금은 원자 조작 연산 2개만으로 일이 끝납니다. 컨텐션이 발생하지 않는 한 말이죠.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.