以下のコード スニペットでは、特定の値が変更されたときにスレッドによって 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];
}