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 :

Smart Pointer et le Multithreading


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Septembre 2003
    Messages
    49
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Par d�faut Smart Pointer et le Multithreading
    Bonjour a tous. Voil� cela fait quelque temps que je bloque au niveau de la conception d'une classe: une classe de SmartPtr mais qui soit thread safe. Ce qui suit est une ebauche de la declaration de cette classe:


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    template<typename Ty,bool IsMultiThread = false>
    class SmartPtr;
     
     
    template<typename Ty> 
    class SmartPtr<Ty,true>
    {
    	public:
    		template<typename Ty> class Proxy;
     
    		SmartPtr();
    		explicit SmartPtr(Ty* Elt);
    		.../...
     
    		SmartPtr::Proxy<Ty>* operator -> ();
    		const SmartPtr::Proxy<Ty>* operator -> () const;
     
    		//??? operator *();	     <--- le probleme est ici.
     
     
    		../...
     
    };
    je veux eviter les instructions du genre:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    struct A
    {
    	int val;
    	A(int i);
    };
     
    SmartPtr<A> sp(new A(10) );
    int* pi = &(*sp).val;
    Toute proposition es la bienvenue.
    Merci pour votre aide.

  2. #2
    Membre �m�rite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par d�faut
    Qu'est ce que tu entends par "je veux �viter les trucs du genre" ?

    Qu'est que tu veux � la place ?

  3. #3
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Jettes un oeil au chapitre de Modern C++ Design (D'Andrei Alexandrescu) qui est d�di� � ce sujet. Tu devrais trouver ce chapitre en ligne sur le site de l'�diteur dans mes souvenirs.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  4. #4
    Membre �m�rite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    D�tails du profil
    Informations personnelles :
    �ge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par d�faut
    et celle de boost, elle est multithread ?
    y a-t-il un probleme a les utiliser avec les thread de Qt, de pthread ou autre ?

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Je ne sais pas pour les shared_ptr<>, mais les intrusive_ptr<> le seront si tu impl�mente le verrouillage n�cessaire dans tes fonctions d'incr�mentation/d�cr�mentation du comptage de r�f�rence. L�, tu pourras utiliser des mutex, ou encore sous Windows, les fonctions Win32 InterlockedIncrement() et InterlockedDecrement(), etc.

    Un truc bien avec les smart pointers, c'est qu'on n'a plus besoin de synchronisation/verrouillage une fois que le nombre de r�f�rences est inf�rieur ou �gal � 1, permettant une suppression sans probl�mes.
    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.

  6. #6
    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
    Par d�faut
    Les smart pointers de boost sont d�j� thread-safe.
    Par contre shared_ptr n'est pas lock-free (probl�me li� � sa taille, deux mots et non un)

Discussions similaires

  1. R�ponses: 2
    Dernier message: 19/03/2008, 11h25
  2. Boost & smart pointers
    Par Goduak dans le forum Boost
    R�ponses: 5
    Dernier message: 28/02/2008, 10h41
  3. Smart Pointer
    Par Fry dans le forum C++
    R�ponses: 5
    Dernier message: 03/10/2005, 23h13
  4. Utilisation des smart pointer
    Par 0xYg3n3 dans le forum MFC
    R�ponses: 11
    Dernier message: 22/04/2005, 18h37
  5. templates et smart pointers
    Par delire8 dans le forum C++
    R�ponses: 9
    Dernier message: 10/07/2003, 16h26

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