숨바꼭질,부스트 상태는 내가 (부스트 스레드) C++에서 스레드 를 작업을 시작하고 난 다음과 같은 상황에서 내 자신을 발견 휘발성 변수를
필요 int 변수 buffered
이 휘발성이어야합니다.
은 ...
boost::mutex::scoped_lock lk(monitor);
while (true) {
buffer_not_empty.wait(lk);
}
그러나 이것은 부스트 문서에서 예이기 때문에, 내가 뭔가를 누락 될 수 있습니다 : 나는, 컴파일시에,이 같은 최적화를 방지해야한다고 말할 것 이러한 종류의 최적화를 막기에 충분한 잠금/뮤텍스/조건? 자바 좋아해?
'monitor' 잠금은 변수를 보호합니다. 충분 해. –
이것은 java와 같은 것을 의미합니다. 어떤 잠금도 변수를 보호합니다. – Ha11owed
실제로 모든 잠금은 해당 잠금 아래에서 일관되게 액세스되는 모든 변수를 보호합니다. C++ 11은 원자 타입을 통해 lockless 변수를 제공 할 것이지만, AFAIR boost는 그것들을 제공하지 않습니다. 사실, 세부 사항 네임 스페이스의 적어도 일부 유형에 대해서는 AFAIR boost가 제공됩니다. –