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 :

Pointeurs et multi-thread


Sujet :

Threads & Processus C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut Pointeurs et multi-thread
    Bonjour,

    j'inaugure mon premier message en espérant ne pas m'être trompé de catégorie. Je suis confronté à une problématique pour laquelle je n'ai pas encore trouvé de solution satisfaisante.

    Soit une classe A, contenant une liste de pointeurs sur une classe B std::list<B*>. Cette classe A est amenée à fournir à des classes utilisatrices des pointeurs sur B issus de cette liste.

    Les classes utilisatrices ont des instances dans différents threads fonctionnant en parallèle.

    La classe A doit, à la survenance de certains évènements, supprimer des instances de B contenues dans sa liste.

    Il peut arriver alors que des instances classes utilisatrices utilisent ces pointeurs bien que ceux-ci aient été supprimés.

    Quelles bonnes pratiques recommander pour gérer ce genre de cas de figure ? Merci d'avance à ceux qui m'aideront à y voir plus clair.

  2. #2
    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
    Par défaut
    Bonjour et bienvenu,
    Citation Envoyé par TH-Gemini Voir le message
    Quelles bonnes pratiques recommander pour gérer ce genre de cas de figure ? Merci d'avance à ceux qui m'aideront à y voir plus clair.
    Je passe sur la gestion des accès concurrent (mutex etc.) en présumant que tu connais déjà la problématique.
    Pour les pointeurs : les pointeurs intelligents !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 31
    Par défaut
    Bonjour,
    J'ai une idée, à toi de voir si c'est une bonne.
    En m'inspirant de l'objective-C, pour chaque pointeur (B *) j'associerais un nombre (int) indiquant le nombre d'"instances" qui utilisent le pointeur.
    A chaque fois qu'une instance utilise un pointeur, elle incrémente le nombre qui lui correspond, quand elle n'en a plus besoin, elle des-incrémente le nombre.
    Quand le nombre est égal à 0, on delete (B *).

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Ton idée ça s'appelle du référence counting et ça existe déjà implémenté. (cf le lien de 3Darchi)

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    oui ça s'appelle un pointeur intelligent, comme boost::shared_ptr

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2010
    Messages : 5
    Par défaut
    Ok merci pour vos avis. J'avais effectivement pensé aux pointeurs intelligents, mais comme dans le standard hors boost il n'y avait que le auto_ptr qui ne répondait pas à la problématique, je cherchais une autre solution.

    L'article pointé par 3D archi m'a cependant bien aidé car j'ignorais que la STL disposait elle aussi des auto_ptr ; je ne connaissais pas l'existence de TR1.

    Concernant les joies de la programmation parallèle, je débute et je rencontrerais sûrement quelques soucis. Le peu que j'ai appris en cours (ça commence à dater ^^) devrait tout de même m'aider.

    Encore merci pour vos retours

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Réponses: 2
    Dernier message: 15/05/2004, 18h33
  3. Réponses: 16
    Dernier message: 30/01/2004, 11h05
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

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