더북(TheBook)

5.3.5 원자성을 보장하는 연산

원자성을 보장하는 연산(atomic operation)이란 쪼갤 수 없는 연산을 말한다.

i += 1 같은 단순한 연산이라 해도 최소 세 단계를 거친다.

1. 메모리에서 값을 읽는다.

2. 값을 1 증가시킨다.

3. 새로운 값을 메모리에 다시 쓴다.

고루틴 여러 개를 동시에 실행하면 CPU는 각 고루틴을 시분할하여 번갈아 실행하는 방식으로 병행 처리를 한다. 즉, i += 1 같은 단순한 연산을 처리하는 도중에도 CPU는 해당 연산을 잠시 중단한 후 다른 고루틴을 수행할 수 있고, 이 과정에서 동기화 문제가 발생할 수 있다.

sync/atomic 패키지가 제공하는 함수를 사용하면 CPU에서 시분할을 하지 않고 한 번에 처리하도록 제어할 수 있다.

표 5-1에 sync/atomic 패키지가 제공하는 함수를 정리했다.

표 5-1 sync/atomic 패키지가 제공하는 함수
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.