쓰레드는 독립적인 존재입니다.
여러개의 쓰레드가 실행한다면, 각기 자유롭게 실행이 될 것입니다.
하지만, 쓰레드를 여러대를 사용할 때에는 반드시 신경을 써야할 일이 있습니다.
바로, '동기화'입니다.
여러 쓰레드가 열심히 자기 할일을 하고 있는데,
하나의 '공유 변수'를 사용하게 될 때 문제가 발생합니다.
예를 들어, A라는 쓰레드가 데이터를 지우고 있는데
B와 C라는 쓰레드는 그 사실을 모른채 A가 지운 데이터에 접근하고자하면 어떻게 될까요?
따라서, '원자적(Atomic)인 연산에 의해 공유 메모리는 아주 잘 보호되어야합니다.'
원자는 더 이상 나눌 수 없는 최소 단위의 기본 입자를 말하지요...
원자적 연산이란, 따악 하나만... 단 하나만 연산하는 것을 말합니다.
연산을 수행하면서 그 누군가의 방해도 받지 않고 하나의 연산을 하는 것입니다.
쓰레드가 여러개 사용될 때에는...
즉, 두 대 이상의 쓰레드가 하나의 공유 변수를 사용할 때에는
하나의 쓰레드만 공유 변수에 접근할 수 있도록 '원자적 연산'을 '보장'해줘야한다는 것입니다.
각 쓰레드들이 마치 '한 몸'이 되도록...
신경쓰면서 설계하고, 코딩해야하겠습니다.
'삽질의 현장 > - ETC' 카테고리의 다른 글
[삽잡이] 객체지향 프로그래밍에서 주의해야할 점 (0) | 2015.10.26 |
---|---|
[삽잡이] 메모리 복사과정 (0) | 2015.10.08 |
[삽잡이]WinSock2 헤더 사용시 주의사항 (0) | 2015.10.05 |
[삽잡이] 유니코드와 멀티바이트코드 (0) | 2015.09.25 |
[삽잡이] 유니코드(Unicode) (0) | 2015.09.25 |