삽질의 현장/- ETC

[삽잡이] 원자적인 연산의 중요성

shovelman 2015. 10. 6. 10:35


쓰레드는 독립적인 존재입니다.

여러개의 쓰레드가 실행한다면, 각기 자유롭게 실행이 될 것입니다.

하지만, 쓰레드를 여러대를 사용할 때에는 반드시 신경을 써야할 일이 있습니다.

바로, '동기화'입니다.


여러 쓰레드가 열심히 자기 할일을 하고 있는데,

하나의 '공유 변수'를 사용하게 될 때 문제가 발생합니다.


예를 들어, A라는 쓰레드가 데이터를 지우고 있는데

B와 C라는 쓰레드는 그 사실을 모른채 A가 지운 데이터에 접근하고자하면 어떻게 될까요?


따라서, '원자적(Atomic)인 연산에 의해 공유 메모리는 아주 잘 보호되어야합니다.'

원자는 더 이상 나눌 수 없는 최소 단위의 기본 입자를 말하지요...

원자적 연산이란, 따악 하나만... 단 하나만 연산하는 것을 말합니다.

연산을 수행하면서 그 누군가의 방해도 받지 않고 하나의 연산을 하는 것입니다.


쓰레드가 여러개 사용될 때에는... 

즉, 두 대 이상의 쓰레드가 하나의 공유 변수를 사용할 때에는

하나의 쓰레드만 공유 변수에 접근할 수 있도록 '원자적 연산'을 '보장'해줘야한다는 것입니다.

각 쓰레드들이 마치 '한 몸'이 되도록... 

신경쓰면서 설계하고, 코딩해야하겠습니다.