본문 바로가기

My Study/Function

InterlockedIncrement

인터락 함수 기반의 동기화
LONG __cdecl InterlockedIncrement(
  __inout  LONG volatile *Addend
);

Addend : 값을 하나 증가시킬 32비트 변수의 주소값을 전달한다. 둘 이상의 쓰레드가 공유하는 메모리에 저장된 값을 이 함수를 통해서 증가시킬 경우, 동기화된 상태에서 접근하는 것과 동일한 안정성을 보장 받음.

volatile 의미(키워드) - 2가지 기능
C, C++언어의 ANSI표준 키워드

1. 최적화를 수행하지 마라.
예를 들면 
int a = 10;
a = 30;
printf(a);
에서 첫번째 문장은 필요가 없다. 그래서
컴파일러는 보통 
int a = 30;
printf(a);
로 바꿔버림
이런게 최적화지만 최적화가 필요하지 않을 때도 있기 때문에..

int volatile a = 10; 
이렇게 하면 된다.

2. 메모리에 직접 연산하라!
성능 향상을 위해 요새는 캐쉬메모리라는 것을 사용한다.
하지만 캐쉬메모리에 저장이 되면 우리가 원하는 시점에 그것을 사용할 수 없다.
그래서 절대로 그 데이터가 캐쉬메모리에 저장되지 않게하는 기능

'My Study > Function' 카테고리의 다른 글

ReleaseMutex  (0) 2010.02.25
CreateMutex  (0) 2010.02.25
DeleteCriticalSection  (0) 2010.02.25
LeaveCriticalSection  (1) 2010.02.25
EnterCriticalSection  (0) 2010.02.25