본 자료는...
volatile이라는 정의의 의미
1.특정 최적화에 주의해라
2,.멀티 쓰레드 환경에서 주의해라
주로 C,C++이나 MCU의 레지스터를 다룰 때 1번의 의미로 사용되곤 하며
Java에서는 2번의 의미로 사용되곤 한다.
1.
옵티마이즈 기능에 의한 최적화를 시키지 않는다.
ex)
static int foo;
void bar(void)
{
foo = 0;
while (foo != 255);
}
와 같은 구문에서 최적화 옵션을 켜면, void bar내의 내용을 최적화 되어, while로 갈때는 항상 foo가 255가 아니라 0이기 때문에
void bar_optimized(void)
{
foo = 0;
while (true);
}
위와 같이 된다. foo에 volatile을 적용하면
static volatile int foo;
void bar (void)
{
foo = 0;
while (foo != 255);
}
위와 같이 최적화에 의한 생략과정이 발생하지 않는다.
'Software > Programming' 카테고리의 다른 글
singleton 패턴과 volatile---DCL(Double Checking Locking) (0) | 2016.04.15 |
---|---|
volatile(Java) (0) | 2016.04.15 |
구조체와 공용체. 공용체의 패딩 (0) | 2015.01.11 |
MFC)버튼을 누르는 동안 지속되는 카운팅 예제 (2) | 2014.10.19 |
비트필드(Bit Field) (0) | 2014.08.11 |