Les opérations atomiques en C#?
Est-il un moyen systématique pour savoir si une opération en C# sera atomique ou pas? Ou il y a des lignes directrices générales ou de règles de pouce?
Vous devez vous connecter pour publier un commentaire.
Est-il un moyen systématique pour savoir si une opération en C# sera atomique ou pas? Ou il y a des lignes directrices générales ou de règles de pouce?
Vous devez vous connecter pour publier un commentaire.
Pour quelque chose de plus complet/détaillée:
Lit et écrit à la valeur de 32 bits types atomique: elle comprend les éléments suivants de la valeur intrinsèque (struct) types:
bool, char, byte, sbyte, short, ushort, int, uint, float
. Les types suivants (parmi d'autres) ne sont pas garantis pour être atomique:decimal, double, long, ulong
.par exemple
De référence affectation est également une opération atomique:
long
sur une plate-forme 64 bits serait non-atomique.Oui. Lire la spécification CLI: http://www.ecma-international.org/publications/standards/Ecma-335.htm. Par exemple:
I. 12.6.6 Atomique lit et écrit
Concernant le 64 bits longue question, Eric Lippert réponses ici: http://blogs.msdn.com/b/ericlippert/archive/2011/05/31/atomicity-volatility-and-immutability-are-different-part-two.aspx
De la CLI spécifications, vous pouvez obtenir ici:
L'article 12.5 de la spécification C#ici:
Faire l'opération d'incrémentation atomique avec cette.