Пустой цикл без проверки условия

В многопоточной программе C ++ У меня есть эквивалент этого выполнения в одном потоке:

while(obj->member) { } // waiting for obj->member to be set to false in another thread

, а в другом потоке, obj-> member установлен в false. Однако, даже когда он установлен в false, цикл не прерывается. Если я изменю это на следующее:

while(obj->member) { Sleep(1) }

Он работает как положено и обрывается, когда для obj-> member установлено значение false в другом потоке.
петля не разрывается. Если я изменю это на следующее:

while(obj->member) { Sleep(1) }

Он работает как положено и обрывается, когда для obj-> member установлено значение false в другом потоке.
петля не разрывается. Если я изменю это на следующее:

while(obj->member) { Sleep(1) }

Он работает как положено и обрывается, когда для obj-> member установлено значение false в другом потоке.
Почему это работает так?

5
задан Hock 17 August 2010 в 18:40
поделиться