Software/Programming
volatile(C,C++)
십자성군
2016. 4. 15. 02:43
본 자료는...
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);
}
위와 같이 최적화에 의한 생략과정이 발생하지 않는다.