J'ai trouvé lock inc addr
mais cela ne conserve pas une copie de la valeur stockée et même une lecture immédiatement après dans le même thread pourrait venir après une écriture concurrente. La meilleure solution que j'ai trouvée est une boucle load
/inc
/cas
.Est-ce que x86 a un incrément atomique qui conserve la valeur qui a été stockée?
4
A
Répondre
11
lock xadd
est votre ami.
3
Voir atomic_impl.h pour plus d'informations sur les primitives atomiques x86/x86_64 et leur utilisation.
Questions connexes
- 1. Comment savoir ce qui a été cliqué?
- 2. bouton qui a été taraudés vue alerte
- 3. Django inlines, comment sais-je ce qui a été édité?
- 4. C# Désérialise une classe qui a été déplacée ou renommée
- 5. Valeur du dictionnaire C# effacement lorsque j'efface la liste qui lui a été assignée ... pourquoi?
- 6. Comment puis-je transmettre une classe qui a été typedef'd?
- 7. N'importe qui a un UITypeEditor qui sélectionne les instances System.Type?
- 8. Comment mapper IDictionary qui a une valeur IList?
- 9. Impossible de lire la variable qui a été stockée dans une boucle while, while out of the while
- 10. Trouver un enregistrement dans la table mysql qui a la valeur la plus élevée
- 11. Quel objet a été cliqué lorsqu'un événement a été déclenché?
- 12. PL/SQL: Comment exécuter un SP qui préforme un DML et a une valeur de retour?
- 13. Qu'est-ce qui a remplacé usbioctl.h?
- 14. Dernière fois qu'une procédure stockée a été exécutée
- 15. tests unitaires contrôleurs Zend - comment puis-je tester ce qui a été réglé dans la
- 16. Voir ce qui a provoqué un déclencheur SQL?
- 17. Un textbox/richtextbox qui a la coloration syntaxique? [C#]
- 18. Visual Studio plugin qui montre qui a enregistré le code
- 19. Détermination de l'instance de NSView qui a initié un mouseDown:
- 20. La connexion sous-jacente a été fermée: La connexion a été fermée de manière inattendue.
- 21. Comment faire correspondre un élément qui a un attribut qui « contient » une certaine valeur à l'aide Jquery mais
- 22. accès à un iframe qui a été appelé à l'aide ajax
- 23. Qu'est-ce qui provoque l'erreur "La collection a été modifiée après l'instanciation de l'énumérateur"?
- 24. Comment libérer la mémoire qui a été utilisée pour une variable en C?
- 25. Comment contrôler un MovieClip qui a été chargé en utilisant loadclip() dans AS2?
- 26. Prototype cacher la div qui a un lien spécifique (<a href)
- 27. JQuery: Recherche de l'objet qui a créé un élément DOM
- 28. Qui a acheté l'autocomplétion pour linqpad?
- 29. JavaScript \ JQuery - identifiant si la valeur du bouton radio a été modifiée par un clic
- 30. Analyser le tableau PHP qui a un abject à l'intérieur
En C++ 11 std :: atomic, ['fetch_add'] (http://en.cppreference.com/w/cpp/atomic/atomic/fetch_add)' + 1' fait ce que vous voulez. Ou plus simplement, ['operator ++'] (http://en.cppreference.com/w/cpp/atomic/atomic/operator_arith), mais vous ne pouvez pas utiliser un memory_order_relaxed plus faible pour le rendre plus rapide x86 si vous n'avez pas besoin d'une barrière. ('lock xadd' implémente' fetch_add', en retournant l'ancienne valeur). –
[Peut num ++ être atomique pour 'int num'?] (Https://stackoverflow.com/q/39393850/995714) –