일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- Upbit API
- Prism
- 즐겨찾기
- 업비트 API
- c# 업비트 api키 목록
- c# api호출
- maui
- upbit
- c# restapi
- XAML
- c# 라이브 차트
- c# websocket
- 북마크
- WPF
- 업비트 차트
- Chart
- 나만의 사이트모음집
- c# restapi 호출
- c# 차트
- c# maui
- 업비트 c#
- 라이브 차트
- 업비트
- 차트
- c# 업비트
- C#
Archives
- Today
- Total
하아찡
Volatile 예약어 본문
Volatile 예약어
해당 키워드를 붙여서 작업할 경우 컴파일 과정에서 최적화를 하지 않습니다.
해당 소리가 무엇이냐 아래 코드에서 확인해보겠습니다.
#include <iostream>
int main()
{
volatile int a = 5;
a = 7;
a = 8;
a = 9;
}
예를들어 위와 같은 코드가 있습니다. a변수는 volatile를 붙여서 선언했습니다.
이과정에서 원래같으면 컴파일러가 최적화 과정에서 불필요한 과정인 a = 7; a = 8;를 무시하고 a = 9;코드만 사용하게 되는데, volatile를 사용한 변수는 해당 과정이 컴파일을 했을때 전부다 작동하게 합니다. 이걸 실제 디스어셈블로 확인해보면
위와 같은 코드로 나타나는데 a변수를 처리하는데 있어서 불필요한 과정을 다 처리했습니다.
근데... 혹시...? 나는왜 volatile를 사용하지않았는데도 불필요한 과정이 다보이나 싶을때는 Debug상태인지 Release상태인지 확인해보세요.
Debug상태일때는 최적화를 하지않아서 불필요한 작업도 다 디스어셈블로 확인이 가능하답니다.
해당 예약어는 내가 컴퓨터한테 "이런 불필요한 과정도 내가 의도한거닌깐 생략하지마~"라고 시킬때 쓰시면 됩니다.
반응형
'C++ > 추가공부' 카테고리의 다른 글
[C++] 메모리 모델 (0) | 2024.12.27 |
---|---|
[C++ 11] condition variable(조건 변수) (0) | 2024.12.27 |
[C++] Event (0) | 2024.12.27 |
[C++ 11] SleepLock (1) | 2024.12.27 |
[C++ 11]std::atomic, SpinLock (1) | 2024.12.27 |