在下面的代码片段中,当某个值发生变化时,一个线程调用 SetValue(),另一个线程调用 GetValue() 来检索该值。我的问题是,在任何情况下 GetValue() 会返回虚假结果吗?
double g_value[2];
// Thread one calls this to set the value
void SetValue( double value )
{
g_value[0] = value;
g_value[1] = value;
}
// Thread two calls this to get the value
double GetValue()
{
double value[2];
do
{
value[0] = g_value[0];
value[1] = g_value[1];
}
while ( value[0] != value[1] );
return value[0];
}