|
Critical Section은 그 안에 하고 하는 일을 Atomic 하게 하고 싶을 때 사용합니다.
int 값은 경우 1 WORD이므로 프로세서에서 Atomic하게 처리되므로 굳이 Critical Section이 필요없습니다.
그러나 다수의 배열을 갱신하고 자 할때에는 Critical Section이 필요하리라 봅니다.
필요한 경우는 아마 배열이 갱신되고 있는 동안 그 배열을 사용하는 것은 Data Integrity에 손상을 가져오는 동작같은 것이 되겠지요.
예를 들어 어떤 사람이 DB에 전화번호를 011-111-1111로 저장했는데 이 정보를 011-333-3333으로 바꿀려고 하는 있는데 시스템 관리자가 백업을 한다고 바꾸고 있는 중간에 저장을 해버리면 011-113-3333으로 백업이 될지도 모르는 상황이 발생될 수도 있겠죠.
참고로 아래와 같은 실험에서,
: 1번 쓰레드에서 s라는 변수에 0x2040을 넣었다.
: 2번 쓰레드에서 s라는 변수에 0x3060을 넣었다.
32 bit 프로세서에서는 1 WORD(= 32 bit)를 한번에 메모리에서 읽기 때문에 Atomic합니다. ^^
|