Maison >développement back-end >C++ >Les variables atomiques en C 11 peuvent-elles empêcher les lectures obsolètes dans les environnements multithread ?
Concurrence : atomique et volatile dans le modèle de mémoire C 11
Question :
Dans un environnement multithread avec des variables globales partagées, un thread peut-il lire une valeur obsolète à partir d'une variable atomique ? En quoi les types atomiques et volatils diffèrent-ils pour garantir l'intégrité des données ?
Réponse :
Volatile vs. Atomique
Volatile ne ne garantit pas l’accès atomique. Son objectif principal est les E/S mappées en mémoire et la gestion des signaux. Utiliser volatile avec std::atomic est redondant.
Ordre de la mémoire avec des variables atomiques
La visibilité des variables atomiques dépend du paramètre d'ordre de la mémoire utilisé.
Garantir les données Intégrité
Pour garantir l'intégrité des données, des opérations de lecture-modification-écriture (RMW) telles que Exchange() et fetch_add() doivent être utilisées. Ces opérations opèrent toujours sur la « dernière » valeur, éliminant ainsi le risque de valeurs obsolètes.
Considérations supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!