, volatile . . . , volatile.
, , , , . :
#include <atomic>
std::atomic<int> x = 0;
void thread1()
{
while (true) {
sleep(1);
if (x > 0)
break;
}
}
void thread2()
{
while (true) {
sleep(1);
x++;
}
}
volatile.
, volatile , , , , :
for (volatile int i = 0; i != LARGE_NUMBER; ++i)
{ }
for (int i = 0; const_cast<volatile int &>(i) != LARGE_NUMBER; ++i) {}