在一个多线程的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时,它的运行结果符合预期并崩溃了。
为什么会这样呢?