반응형

volatile 의 정의 [msdn]

volatile 키워드는 그 뒤에 오는 이름과 관련된 값을 사용자 응용 프로그램을 사용하지 않고도 변경할 수 있도록 지정합니다. 따라서, volatile 키워드는 중단 서비스 루틴과의 통신에 사용되는 다중 처리나 전역 데이터 영역에서 접근할 수 있는 공유 메모리에서 개체를 선언하는 데 유용합니다.

이름을 volatile로 선언한 경우, 컴파일러가 프로그램에 액세스할 때마다 메모리에서 값을 다시 로딩하기 때문에 개체의 최적화 횟수가 상당히 줄어들게 됩니다. 이 키워드는 개체 상태가 예기치 않게 변경되는 경우 예상 가능한 프로그램 성능을 보장하는 유일한 방법이기도 합니다.


'성능을 보장하는 유일한 방법'이라고 한다. 아마 멀티스레드 프로그래밍을 공부하면서 배운 내용을 접목시켜봐야겠다.



volatile을 쓰면

반드시 메모리에 읽고 쓰고

변수를 레지스터에 할당하지 않는다.

읽고 쓰는 순서를 지킨다.

이 3가지를 만족하게된다. (안쓰면 그냥 값을 뭉게고 넘어간다., 그리고 변수를 막 섞여서 읽음.)




[사용법]

 volatile int* a;

*a = 1 ; 순서를 지킴        [volatile한 int의 *] a가 있는곳이 있는 그 가르키는게 volatile임.

a = b ; 순서를 지키지 않는다.

int* volatile a;                    

*a =1; 순서를 안지킴.

a = b 순서를 지킴


( 모르면 앞뒤로 다 붙여라 그냥 )


반응형

'이론공부 > 이것저것 공부' 카테고리의 다른 글

데이터베이스 솔루션 정리  (0) 2021.06.18
포인터 의 크기 in c/c++  (0) 2021.01.04
커널 오브젝트  (0) 2020.12.14
게임서버 분류  (0) 2017.05.01
게임서버 시작  (0) 2017.05.01

+ Recent posts