2017년 11월 23일 목요일

volatile, std::atomic

volatile
이 메모리에 대한 연산들에는 그 어떤 최적화도 수행하지 말라는 의미의 지시자.
컴파일러 최적화에 의해 volatile 변수를 사용하는 코드가 변경되는 것을 방지.
컴파일러가 해당 변수의 값이 변경될 수 있음을 인지하지 못하고 최적화 처리(예를 들면 변수를 상수로 치환)를 수행하게 되는경우 이를 방지하기 위함


std::atomic 키워드
atomic객체에 대한 연산은 마치 뮤텍스로 보호되는 임계영역안에서 수행되는 것처럼 작동한다.
이런 원자적 연산은 실제 뮤텍스 동작보다 좀 더 효율적인 특별한 기계어 명령들로 구현되는것이 보통.

댓글 없음:

댓글 쓰기