Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 24045|Répondre: 0

[Programme Console] apprentissage volatile des mots-clés en .net/C#

[Copié le lien]
Publié sur 23/05/2018 11:23:40 | | | |
MS LIEN :La connexion hyperlientérée est visible.

Le mot-clé volatile indique qu’un champ peut être modifié par plusieurs threads exécutant simultanément. Les champs déclarés volatils ne sont pas limités par l’optimisation du compilateur (à condition qu’ils soient accessibles par un seul thread). Cela garantit que le champ est rendu avec la valeur la plus récente à tout moment.

Le modificateur volatile est généralement utilisé pour les champs accessibles par plusieurs threads mais qui ne sérialisent pas l’accès à l’aide d’une instruction de verrouillage.

Les mots-clés volatils peuvent être appliqués aux types de champs suivants :

  • Type de citation.
  • Type de pointeur (dans un contexte dangereux). Notez que bien que le pointeur lui-même puisse être mutable, l’objet vers lequel il pointe ne peut pas l’être. En d’autres termes, « pointeur vers un objet mutable » ne peut pas être déclaré.
  • Des types tels que sbyte, byte, short, ushort, int, uint, char, float et bool.
  • Un type d’enum avec l’un des types de base suivants : octet, sbyte, court, ushort, int ou uint.
  • Paramètres de type génériques connus pour être des types de référence.
  • IntPtr et UIntPtr.


Les mots-clés variables ne peuvent être appliqués qu’aux champs d’une classe ou d’une structure.Les variables locales ne peuvent pas être déclarées volatiles


Plus de bêtises, écrivez une boucle pour tester :

Testons ça 10 000 fois d’affilée,a constaté que la sortie de valeurs est correcte, mais,Ça n’explique pasVolatile est sûr pour le filetageParce que, si vous le testez plusieurs fois, vous constaterez qu’il y aura des erreurs de calcul ! Parce qu’il y a une chance d’un résultat correct et une chance d’un résultat erroné



Code:



Testons à nouveau 100 000 boucles, et nous pouvons constater que la valeur de a est incorrecte, car plus le nombre de boucles est petit, plus la probabilité d’erreur est faible, et l’erreur n’est pas si évidente, tout comme il n’y a pas eu d’erreur après 10 000 boucles tout à l’heure.

À ce moment-là, nous ajoutons un verrou pour tester, et on peut voir que la valeur de a est calculée correctement comme prévu.



Code:



Résumé : volatile ne garantit pas la sécurité du fil, comme vous pouvez le voir dans l’exemple ci-dessus.




Précédent:Téléchargez l’outil de saisie de paquets smsniff version chinoise 2.0
Prochain:VS Remote Debug solution « L’opération de débogage prend plus de temps que prévu »
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com