0
다음과 같은 코드를 생각해코드
int a = 0, b = 0;
boost::mutex m;
a++;
m.lock();
m.unlock();
b++;
무엇 잠금 할 그들이 컴파일러 "좋아, 잠시 동안 C++ 표준에 대해 잊지 말 것입니다, 내가 무엇을 최적화 상관 없어 이 경계를 넘어서는 메모리 액세스 순서를 변경하면 안됩니다. " 이는 a++;
이 항상 b++;
전에 발생한다는 것을 의미합니까? 또는 잠금 장치 사이에 문이있는 경우 a++
또는 b++
으로 다시 정렬하지 마십시오.
컴파일러가 'a'와'b'가 지역 변수라는 것을 감안할 때 평소와 같이 컴파일러에서 최적화 할 수 있습니다. 주어진 코드에서 다른 스레드가 문제의'int'를 볼 수있는 방법이 없으므로 뮤텍스는 영향을 미치지 않습니다. –