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 :

partage de données


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Points : 24
    Points
    24
    Par défaut partage de données
    Bonjours à tous !
    Alors voila. Je voudrais connaitre le meilleur moyen de partager une donnée entre des threads.
    En C, j'utilisais pthread.
    J'avais créé la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct s_Donne_Partage
    {
            pthread_mutex_t mut;
            void *Donne;
    }Donne_Partage;
    Maintenant j'utilise la bibliothèque boost et une classe, plus une structure.
    Je cherche un moyen de ne plus avoir à utiliser de pointeur (void*).

    Chaque instance de ma classe Donnee_Partagee contiendra un objet d'un certain type qui ne changera pas.
    J'avais pensais utiliser un conteneur de la stl comme std::vector mais cette objet est plutot fait pour contenir une liste alors je me demande s'il n'y a pas plus simple...

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Qui est responsable de la durée de vie de l'objet en question ?
    Boost ftw

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    moi

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Le "qui" faisait référence à une entité du programme (un objet, un thread,...), et non à une personne...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    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
    Je ne connais pas boost, mais l'idée est en général d'utiliser un objet type mutex pour protéger ta donnée. D'où la question de loufoque 'Qui est responsable de la durée de vie de l'objet en question ?'

  6. #6
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Pour Boost.Thread : http://matthieu-brucher.developpez.c.../boost/thread/
    C'est un module de la bibliothèque Boost. Tout est écrit avec du C++ "moderne" donc tu risques d'être dépaysé, par rapport à pthread

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Bonjours et merci à tous pour vos réponses.
    Pour la question sur la durée de vie :
    mon objet Donnee_partagee serat responsable de la durée de vie de la donnée partagée. Si c'est un objet vector, le destructeur ~DonneePartagee n'aurat pas beaucoup de boulot mais s'il y a de la libération d'espace mémoire à faire c'est dans son destructeur que ca aurat lieu (c'est du moins ce que j'imagine pour l'instant).
    En fait je cherche surtout une bonne idée pour faire ce dont j'ai envie.
    Je n'aimais pas trop l'idée de devoir créer des mutex indépendants de mes données et de gérer les deux en même temps. Je préfère encapsuler le tout dans un objet. Mais si vous avez d'autres idées (des meilleurs tant qu'à faire ) ba je suis preneur !

    Sinon pour l'utilisation de boost::thread, j'ai déjà trouvé la doc de developpez.com et celle de boost.org. Je ne connais pas tout évidemment, mais j'arrive à créer mes threads (éxecutant une fonction ne prenant pas de paramètre) et à utiliser les mutex donc pour l'instant ca va.
    A ce sujet, je crois avoir compris que les threads ne peuvent éxecuter que des fonction n'ayant pas de paramètres ? Je pense que non mais je n'ai pas encore trouvé...

    Voila !
    Encore merci à vous

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par boule_t Voir le message
    A ce sujet, je crois avoir compris que les threads ne peuvent éxecuter que des fonction n'ayant pas de paramètres ? Je pense que non mais je n'ai pas encore trouvé...
    Oui et non. Oui car en principe c'est le cas.
    Non car avec Boost.Bind on peut feinter une fonction qui n'a pas de paramètres tout en fixant ses arguments avant la création du thread.

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Je revient de la doc. Si j'ai bien compris, la fonction que tu passe à la création de ta thread c'est boost::bind(mafonction, arg1, etc). Sympas je connaisais pas du tout ! Merci !

  10. #10
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    C'est tout a fait ça. Ca permet de donner des valeurs, un contexte à ta fonction, pourtant aux yeux de thread ce sera une fonction sans argument, car en fait cela génère une fonction de sorte que les valeurs soient déjà fixées et qu'il ne faille plus les passer en argument. C'est cela qui est passé au thread.

  11. #11
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    C'est similaire à curryfication en programmation fonctionnelle.
    Boost ftw

Discussions similaires

  1. [C#][2.0][OUTLOOK]Ajout d'application et partage de données
    Par pc152 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 23/01/2008, 18h00
  2. probleme partage de données...
    Par Nemesys dans le forum Administration
    Réponses: 2
    Dernier message: 19/04/2006, 21h17
  3. partage de donné entre 2 thread
    Par firejocker dans le forum MFC
    Réponses: 7
    Dernier message: 26/01/2006, 14h54
  4. [architecture]Projet de site/partage de donnée
    Par Seth77 dans le forum Général Conception Web
    Réponses: 18
    Dernier message: 10/12/2005, 09h26
  5. partage de données entre applications
    Par dr_feelgood dans le forum Access
    Réponses: 2
    Dernier message: 09/11/2005, 10h42

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