je ne pouvais trouver aucune référence à ce sujet dans les ... documentationL'assignation de variable et la lecture d'opération atomique?
est d'attribuer à un double (ou tout autre type simple, y compris booléen) une opération atomique vu dans la perspective de discussions?
double value = 0;
public void First() {
while(true) {
value = (new Random()).NextDouble();
}
}
public void Second() {
while(true) {
Console.WriteLine(value);
}
}
Dans cet exemple de code, la première méthode est appelée dans un thread, et la seconde dans un autre. La seconde méthode peut-elle obtenir une valeur foirée si elle est exécutée lors de l'affectation à la variable dans un autre thread? Je ne m'inquiète pas si je reçois l'ancienne valeur, il est seulement important de recevoir une valeur valide (pas une où 2 octets sur 8 sont définis). Je sais que c'est une question stupide, mais je veux être sûr, parce que je ne sais pas comment CLR définit réellement les variables.
Ce n'est pas une question stupide. –
@EricLippert Objet a = 10; Est-ce aussi une opération atomique? J'ai lu MSDN, vos articles etc. Mais ne peux pas sembler trouver la réponse à lui. car cela implique 2 étapes. boxe puis affectation – Ehsan
@NoOne: La mutation de la variable 'a' est atomique car' object' est un type de référence. La boxe n'y entre pas. –