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

 C++ Discussion :

vectors et threads


Sujet :

C++

  1. #1
    Membre actif Avatar de BioKore
    Homme Profil pro
    Dresseur d'Alpaga
    Inscrit en
    Septembre 2016
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Dresseur d'Alpaga

    Informations forums :
    Inscription : Septembre 2016
    Messages : 300
    Points : 219
    Points
    219
    Par défaut vectors et threads
    Bonjour à tous,

    Je me pose actuellement la question de savoir si différents éléments d'un std::vector peuvent être écrits, en même temps, par plusieurs threads différents.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void write_something_in(float & val) {
    	val = .0f;
    }
     
    void thread_launcher() {
    	//...
    	for(auto & i:monVector) {
    		std::thread monThread(write_something_in, *i);
    		monThread.detach();
    	}
    }
    Dans un premier temps, considérant qu'aucune lecture/écriture dans monVector n'est fait en parallèle, ailleurs que les-dits threads.


    Si je pose cette question, c'est parce que j'ai cru comprendre que la lecture simultanée d'un (élément de ?) vector est possible mais pas l'écriture... C'est là où j'ai besoin d'éclaircissements. Car l'écriture sur un même élément, je comprends, mais je ne vois pas pourquoi l'écriture sur des éléments différents ne le serait pas.

    Une piste ?

    merci d'avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 108
    Points : 143
    Points
    143
    Par défaut
    Si il n'y a pas ajout ou suppression d'éléments je ne vois pas pourquoi il ne serait pas possible.

    J'imagine que chaque thread travaillera sur un morceau du vector sans dépendre des morceaux des autres.

  3. #3
    Membre actif Avatar de BioKore
    Homme Profil pro
    Dresseur d'Alpaga
    Inscrit en
    Septembre 2016
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Dresseur d'Alpaga

    Informations forums :
    Inscription : Septembre 2016
    Messages : 300
    Points : 219
    Points
    219
    Par défaut
    Ok, rapide, clair et limpide.

    Cette réponse réponds clairement à ma question.

    Merci !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Le problème n'est pas la lecture ou écriture c'est la réallocation interne du vector.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre actif Avatar de BioKore
    Homme Profil pro
    Dresseur d'Alpaga
    Inscrit en
    Septembre 2016
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Dresseur d'Alpaga

    Informations forums :
    Inscription : Septembre 2016
    Messages : 300
    Points : 219
    Points
    219
    Par défaut
    Oui ; merci pour cette précision !

    Dans le cas précis de mon exercice, je n'aurais pas à faire face à cette situation ; mon std::vector (qui pourrait donc bien être un std::array en fait) reste de taille fixe et à priori est sensé conserver son adresse. Chaque élément du tableau est aussi sensé être indépendant. Dans ce cas là, comme l'a souligné baragouine, tout devrait bien se dérouler avec plusieurs threads.

    Reste a voir maintenant comment dimensionner le nombre de threads, mais je garde ce sujet pour un autre fil, lorsque j'aurais commencé quelques tests.

    Merci à vous deux !

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

Discussions similaires

  1. Vector, threads et mutex sur valeurs distinctes
    Par tickyletroll dans le forum C++
    Réponses: 3
    Dernier message: 03/12/2016, 09h29
  2. [Win] Thread passage Structure pointeur Vector + string
    Par jerem3000 dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 31/10/2012, 15h24
  3. vector <string> paramètre thread
    Par parabole33 dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 05/01/2012, 19h41
  4. sf::Thread, vector, ..
    Par NainTernaute dans le forum SFML
    Réponses: 5
    Dernier message: 31/03/2010, 14h24
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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