Ceci est une version simplifiée de quelques lignes de code que je suis actuellement en train de maintenir :
int SomeFunc()
{
const long lIndex = m_lCurrentIndex;
int nSum = 0;
nSum += m_someArray[lIndex];
nSum += m_someArray[lIndex];
return nSum;
}
lCurrentIndex est mis à jour périodiquement par un autre thread. La question est : est-ce que faire une copie locale de m_CurrentIndex garantit que les deux accès à m_someArray utilisent le même index ?
Veuillez noter qu'il s'agit d'un exemple simplifié ; je réfléchis au concept de faire une copie locale, et non au code exact montré ici. Je sais que le compilateur mettra la valeur dans un registre, mais c'est quand même une copie locale par opposition à lire de l'Index courant deux fois.
Merci !
Édition : L'assignation initiale est sûre, les deux sont garantis d'être sur 32 bits dans notre configuration. Édition2 : Et ils sont correctement alignés sur une frontière de 32 bits (j'avais oublié celui-là)