24. Synchronization 강의 메모

1386 단어 CSAPPOSCSAPP

static으로 선언되어있기 때문에

static int cnt = 0;
에서의 cntthread1, thread2에 의해 사용되는 shared variable 이다.
단지 scope이 thread라는 함수에 한정지어졌을 뿐이다.


85.15 volatile 변수

변수를 선언할 때 앞에 volatile을 붙이면 컴파일러는 해당 변수를 최적화에서 제외하여 항상 메모리에 접근하도록 만듭니다.

volatile int num1 = 10;    
// 변수를 최적화에서 제외하여 항상 메모리에 접근하도록 만듦

volatile로 선언한 변수는 사용할 때 항상 메모리에 접근합니다. 즉, 이 변수는 언제든지 값이 바뀔 수 있으니까 항상 메모리에 접근하라고 컴파일러에게 알려주는 것입니다.

즉, 컴파일러한테, 네 멋대로 해석하지 말지어다! 라고 알려주는 것이다

CMU 교수님 왈

It tells the compiler never to put that variable in a register


외부 interrupt가 일어나도 괜찮은지, 동시에 접근해도 괜찮은지, 주소를 넘겨줘도 괜찮은지 등은 코드의 실행환경/맥락에 따라 달라진다.



P and V is a Kernel function

좋은 웹페이지 즐겨찾기