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

Langage C++ Discussion :

Opérateur , (virgule) et ordonnancement.


Sujet :

Langage C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Points : 47
    Points
    47
    Par défaut Opérateur , (virgule) et ordonnancement.
    Bonjour,

    Voilà j'ai une petite question au sujet de l'opérateur virgule et de l'ordonnancement. Il s'agit de savoir s'il est possible qu'un thread soit élu entre l'évaluation des deux expressions (à gauche et à droite de la virgule).

    Il ne s'agit que d'un exemple, donc je cherche à savoir si oui ou non ce morceau de code est cohérent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int a, b;
    // Début de section critique
    a = 3, b = 2;
    // Fin de section critique

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    A priori, en se basant sur les ordres de priorités des opérateurs, l'évaluation de l'expression devrait se dérouler dans cet ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ::operator,( ::operator=( a, 3 ), ::operator=( b, 2 ) );
    Donc operator,() ne devrait s'exécuter qu'à la fin.

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Citation Envoyé par Agoudard Voir le message
    un thread soit élu entre l'évaluation des deux expressions
    Je comprends pas cette phrase...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Points : 47
    Points
    47
    Par défaut
    Donc je peux supposer que l'ordonnanceur ne changera pas de thread / processus au sein de cette évaluation ?

    Ma section critique de l'exemple ne craint rien ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Points : 47
    Points
    47
    Par défaut
    Je comprends pas cette phrase...
    Je parle de l'ordonnanceur et du changement de contexte. En d'autres termes je demande si l'exécution peut se poursuivre dans un des autres processus / threads.

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Décidément, j'ai du mal...
    Qu'appelle tu ordonnanceur ?

    Si ta question est de savoir si ta suite d'opération est atomique (qu'un autre thread ne viendra pas lire ou écrire entre le a=3 et le b=2), la réponse est non. Pas pour rien que le C++11 ajout les fonctionnalités atomic

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Points : 47
    Points
    47
    Par défaut
    C'était bien ma question.

    Merci.

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Par défaut, aucune des différentes opérations n'est à priori atomiques. Ni l'opérateur ',' ... ni l'affectation (même si en pratique l'initialisation d'une variable par une valeur constante l'est probablement).

  9. #9
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Salut,
    Par défaut, aucune des différentes opérations n'est à priori atomiques. Ni l'opérateur ',' ... ni l'affectation (même si en pratique l'initialisation d'une variable par une valeur constante l'est probablement).
    C'est loin d'etre sur. Si j'ai bonne memoire sur un x86_64 c'est impossible d'initialiser une telle variable de 64 bits en une seule instruction et la maniere la plus simple, ce n'est pas de passer par un registre, c'est initialiser les deux parties directements. Un coup de scheduler entre les 2 ecritures et c'est fichu.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Opérateurs virgule fixe en Simulink
    Par silio dans le forum Simulink
    Réponses: 0
    Dernier message: 18/06/2012, 10h45
  2. Opérateur virgule
    Par sami2008 dans le forum Langage
    Réponses: 3
    Dernier message: 12/09/2009, 12h03
  3. Opérateur virgule
    Par Biosox dans le forum Réseau
    Réponses: 6
    Dernier message: 20/05/2006, 23h30
  4. Opérateur virgule
    Par Patrick6 dans le forum C
    Réponses: 5
    Dernier message: 23/12/2004, 13h11
  5. Chiffre a Virgule Fixe
    Par garybaldi dans le forum C
    Réponses: 3
    Dernier message: 21/06/2002, 10h41

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