これは、私が現在維持しているいくつかのコードの簡略化されたバージョンです。
int SomeFunc()
{
const long lIndex = m_lCurrentIndex;
int nSum = 0;
nSum += m_someArray[lIndex];
nSum += m_someArray[lIndex];
return nSum;
}
lCurrentIndex は別のスレッドによって定期的に更新されます。質問は; m_CurrentIndex のローカル コピーを作成すると、m_someArray への両方のアクセスで同じインデックスが使用されるようになりますか?
これは単純化された例であることに注意してください。ここに示されている正確なコードではなく、ローカル コピーを作成するという概念について考えています。コンパイラが値をレジスタに入れることはわかっていますが、lCurrentIndex から 2 回読み取るのとは対照的に、それは依然としてローカル コピーです。
ありがとう!
編集: 最初の割り当ては安全です。セットアップでは両方とも 32 ビットであることが保証されています。Edit2:そして、それらは32ビット境界に正しく配置されています(それを忘れていました)