42 votes

Quelles sont les similitudes entre le modèle de mémoire Java et le modèle de mémoire C ++11?

La nouvelle norme c++ introduit la notion d'un modèle de mémoire. Il y avait déjà des questions sur DONC, à ce sujet, ce qui veut dire, comment peut-il changer la façon d'écrire le code en c++ et ainsi de suite.

Je suis intéressé à savoir comment le C++ modèle de mémoire se rapportent à l'ancienne, bien connue java modèle de mémoire (1.5). Est-il le même? Est-il similaire? Ont-ils des différences significatives? Si oui, pourquoi?

La java du modèle de mémoire a été autour depuis longtemps et beaucoup de gens savent qu'il est assez décemment, donc je suppose qu'il pourrait être utile, non seulement pour moi, pour apprendre le C++ de la mémoire de modèle, en le comparant avec le code java.

22voto

Anthony Williams Points 28904

La Java du modèle de mémoire a été une influence importante sur le C++11 modèle de mémoire, et a été d'où nous avons tiré les termes se passe-avant et se synchronise avec de. Cependant, le C++11 modèle de mémoire vous offre beaucoup de contrôle plus fin sur la mémoire de commande de la mémoire Java modèle.

Java volatile variables sont l'équivalent de C++11 std::atomic<> variables, si vous utilisez std::memory_order_acquire de la mémoire de commande pour les lectures, std::memory_order_release de la commande pour les écritures, et std::memory_order_acq_rel de la commande pour des opérations RMW.

Il n'y a pas d'équivalent en Java - std::memory_order_relaxedou std::memory_order_seq_cst.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X