Здравствуйте, _stun_, Вы писали:
__>Здравствуйте, tripol, Вы писали:
T>>Здравствуйте, tripol, Вы писали:
T>>И в случае с вопросом топик-стартера можно использовать приведенный класс,
T>>но только необходимо добавить volatile.
__>Отключение агрессивной оптимизации тут вряд ли поможет — нечего оптимизировать
Вполне может прооптимизировать такой код:
class A{
long m_a;
public:
long get_a()
{
return m_a;
}
void set_a( long val )
{
m_a = val;
}
};
A a;
void Thread1()
{
a.set_a(1);
}
int main()
{
a.set_a(0);
// start new thread to Thread1()
while(!a.get_a()) // здесь может заинлайнить и без volatile цикл не выйдет
{
}
}
И вообще рекомендуется применять volatile для таких случаев всегда независимо от того,
заоптимизирует данный компилятор или нет.