IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

volatile & encapsulation


Sujet :

Boost C++

  1. #21
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Dans un système, le CPU n'est pas le seul gadget pouvant avoir un accès direct à la mémoire...
    Ma comprehension (d'apres entre autres des messages de John Mashey sur comp.arch relatant le contexte de l'introduction de volatile dans le langage C) c'est que volatile doit alors suffire, mais c'est a charge de l'utilisateur de ne le faire que sur des zones non cachees (et donc il faudrait que volatile introduise des barrieres sur Sparc puisqu'il n'y a pas moyen de regler le MMU pour qu'elles ne soient pas necessaires).

    Mais ce qui est sur c'est qu'au mieux la semantique desiree de volatile est sous-specifiee, au pire elle n'est pas specifiable dans le modele d'execution utilise par les normes C et C++ pour specifier leur semantique.

  2. #22
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 190
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Je ne comprend pas trop ce que vous entendez par "barrière d'optimisation".
    Voir modèle mémoire de la JVM et les articles données en référence. Ils sont assez instructifs.
    -W
    Pour moi une barrière d'optimisation est une "barrière" qui empêche le compilateur de réordonner certains accès mémoire alors q'une barrière mémoire ("mémoire fence") agit au niveau du hardware.

    Ceci étant dit, ce que j'ai dit dans mon post précédent est faux puisque apparemment (d'après les liens que tu as donnés) en Java volatile agit à la fois comme une barrière d'optimisation et comme une barrière mémoire.

  3. #23
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 688
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Ma comprehension (d'apres entre autres des messages de
    John Mashey sur comp.arch relatant le contexte de l'introduction de volatile dans le langage C) c'est que volatile doit alors suffire, mais c'est a charge de l'utilisateur de ne le faire que sur des zones non cachees (et donc il faudrait que volatile introduise des barrieres sur Sparc puisqu'il n'y a pas moyen de regler le MMU pour qu'elles ne soient pas necessaires).
    Disons que le contexte dans lequel "volatile" a été initialement conçu pour dire au compilateur d'éviter certaines optimisations.
    Bien que suffisant dans beaucoup de cas, cela ne rend pas compte des spécificités des architectures matérielles. Soit on laisse le programmeur s'en débrouiller, soit on fait comme Java, ie le langage propose un modèle mémoire indépendant de l'architecture.


    Mais ce qui est sur c'est qu'au mieux la semantique desiree de volatile est sous-specifiee, au pire elle n'est pas specifiable dans le modele d'execution utilise par les normes C et C++ pour specifier leur sémantique.
    Il y a eu pas mal de réflexions sur le sujet dans le cadre de C++0x. Mais j'ignore si cela a abouti à un "bon" compromis.
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  2. Que veut dire "volatile" devant une variable ?
    Par altahir007 dans le forum C
    Réponses: 4
    Dernier message: 23/06/2004, 15h47
  3. Encapsulation graphique d'un outil en ligne de commande
    Par Leishmaniose dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/11/2003, 11h59
  4. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo