인터락 함수 기반의 동기화
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 |