24. Synchronization 강의 메모
static으로 선언되어있기 때문에
static int cnt = 0;
에서의 cnt
는 thread1
, 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
Author And Source
이 문제에 관하여(24. Synchronization 강의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@esmin/24.-Synchronization-강의-메모저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)