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

Threads & Processus C++ Discussion :

Thread et pointeur de vecteur


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 65
    Par défaut Thread et pointeur de vecteur
    bonjour,

    j'utilise une boucle rapide parallèle qui devrait partager deux pointeurs sur vecteur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    std::vector<int>* IDvec = new std::vector<int>[nbex];
    std::vector<Edge*>* Evec = new std::vector<Edge*>[nbex];
     
    #pragma omp parallel for private(c, nbCells) shared(IDvec,Evec)
    for(c=0 ;c<nbCells ;c++)
    {
            ...
    }
    Les threads utilisent les mêmes pointeurs, mais utilisent-ils les mêmes emplacements mémoire ? autrement dit, est-ce que les emplacements mémoire vers lesquelles pointent IDvec et Evec sont partagés ?

    Merci de vos réponses.

    Cordialement.

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    C'est un peu hors sujet, mais je suis curieux, avec les std::thread / boost::thread, pourquoi utiliser OMP ? Code "ancien" basé la dessus avant l'arrivé de std::thread / boost::thread ? Une autre raison ?

    Pour (essayer de) répondre à ta question, si les pointeurs sont partagés, comment veux tu qu'ils pointent à des endroits différents ? Imo, la zone mémoire pointée n'est pas copiée et est donc partagée. (Aucune idée de comment OMP gère les accès concurrents, mais les conteneurs STL ne sont thread safe qu'en lecture. Il faut synchroniser l'écriture.)

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    @Iradrille: Je me goure peut-être, mais <thread> n'a pas l'air de contenir grand-chose d'autre que des classes de niveau "API Système de multithreading", tandis qu'OpenMP est bien plus que cela, possédant des primitives et du sucre syntaxique pour paralléliser directement des boucles (avec un nombre de thread qui s'adapte au nombre de processeurs de la plate-forme) ou différentes parties d'une fonction...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 65
    Par défaut
    Ok merci. C'est bien ce que je pensais.

    Pour boost, aucune idée en revanche.

    Cordialement

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

Discussions similaires

  1. Erreur en créant un pointeur de vecteur
    Par tet2brick dans le forum C++
    Réponses: 7
    Dernier message: 04/06/2010, 15h29
  2. Thread (pthread) & pointeur générique
    Par darkwall_37 dans le forum Débuter
    Réponses: 9
    Dernier message: 23/02/2010, 09h55
  3. Problèmes avec les thread et les pointeurs
    Par raspac dans le forum POSIX
    Réponses: 2
    Dernier message: 22/10/2006, 17h35
  4. vecteur/tableau de pointeur?
    Par anykeyh dans le forum SL & STL
    Réponses: 2
    Dernier message: 29/03/2006, 13h20
  5. [Débutant]Vecteur de pointeurs
    Par @r$£~%[ dans le forum C++
    Réponses: 18
    Dernier message: 09/08/2005, 16h19

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