Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2294 connectés 

 


Dernière réponse
Sujet : [C++] Design patterns Singleton
gilou M'etonnerait qu'on le trouve en ligne; c'est un bouquin assez recent, et assez trappu.
A+,

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
gilou M'etonnerait qu'on le trouve en ligne; c'est un bouquin assez recent, et assez trappu.
A+,
karens

gilou a écrit a écrit :

Je viens de verifier, le bouquin de Andrei Alexandrescu a un chapitre de 26 pages consacre au singleton.
A+,  




 
 :benetton: Sais-tu sur quel site je peux lire ce bouquin en ligne ?? :benetton:

gilou Je viens de verifier, le bouquin de Andrei Alexandrescu a un chapitre de 26 pages consacre au singleton.
A+,
gilou Le probleme d'une implementation bien faite du singleton, il me semble que Andrei Alexandrescu y consacre un ou deux chapitres dans son bouquin Modern C++ Design: Generic Programming and Design Patterns Applied (pas le bouquin sous la main pour verifier; si c'est pas lui, c'est dans un bouquin de la meme collection chez Addison-Wesley).
A+,
karens En fait je vais utiliser Mutex, et creer une classe de ce type :
 
class SingletonLock
{
SingletonLock() { SingletonMutex.Lock(); }
~singletonLock() { SingletonMutex.Unlock(); }
};
Comme ca le Mutex sera libere quand meme ds la cas ou une exception est lancee.
 :bounce:  
Quelqu'un a-t-il deja fait quelque chose de ce style ?
Vous etes d'accord avec moi ?
karens Oui, je veux une solution threadsafe.
Je pense que je vais utiliser Mutex + peut-etre un double-checking si necessaire.
Merci.
:jap:
BENB

karens a écrit a écrit :

Mais non,  :non: moi je fournis une interface, ce n'est pas moi qui cree les threads !!
Mias il faut que la classe Singleton puisse etre utilisee ds un environnement multithreads.
 :bounce:  




A quel niveau ?
la solution que je te donne est Thread-safe...
maintenant si tu n'a besoin que de thread-level A ou B... c'est plus facile...

karens Mais non,  :non: moi je fournis une interface, ce n'est pas moi qui cree les threads !!
Mias il faut que la classe Singleton puisse etre utilisee ds un environnement multithreads.
 :bounce:
youdontcare

karens a écrit a écrit :

En fait, je veux empecher la creation de 2 instances de la classe Singleton en meme temps. Mais je ne sais pas quelle est la meilleure solution, soit un double-check au cas ou 2 threads vont en meme temps dans le phase critique, soit en utilisant une cle de type Mutex, mais ca je ne connait pas encore...  



et tu peux pas ...
* créer le singleton
* créer le premier thread
* créer le second thread
 
:??:

karens :sarcastic: Quelqu'un a une idee ??? :benetton:
karens

BENB a écrit a écrit :

Quel est le Pb pose par le MT vis a vis du singleton...




 
En fait, je veux empecher la creation de 2 instances de la classe Singleton en meme temps. Mais je ne sais pas quelle est la meilleure solution, soit un double-check au cas ou 2 threads vont en meme temps dans le phase critique, soit en utilisant une cle de type Mutex, mais ca je ne connait pas encore...

BENB

ayachi a écrit a écrit :

 
 
la surcharge de new marcherait pas ?  




:??:
en quoi cela t'empecherais d'en instancier plusieurs, sur la pile par exemple...

ayachi

BENB a écrit a écrit :

Quel est le Pb pose par le MT vis a vis du singleton...
 
class Single
{
public :
Single * GetSingle(void);
void DestroySingle(void);
 
private :
Single();
Single(const Single&);
Single& operator=(const Single&);
~Single();
 
static Single* Slef;
static Mutex SingleMutex;
};
 
Single * Single::GetSingle(void)
{
   Single * result;
   SingleMutex.Lock();
   if (!Self)
   {
      Self = new Single();
   }
   result = Self;
   SingleMutex.UnLock();
}
 
Evidement le mutex n'est necessaire que si tu suppose que deux threads peuvent vouloir creer le singleton simultanement.  




 
la surcharge de new marcherait pas ?

BENB Quel est le Pb pose par le MT vis a vis du singleton...
 
class Single
{
public :
Single * GetSingle(void);
void DestroySingle(void);
 
private :
Single();
Single(const Single&);
Single& operator=(const Single&);
~Single();
 
static Single* Slef;
static Mutex SingleMutex;
};
 
Single * Single::GetSingle(void)
{
   Single * result;
   SingleMutex.Lock();
   if (!Self)
   {
      Self = new Single();
   }
   result = Self;
   SingleMutex.UnLock();
}
 
Evidement le mutex n'est necessaire que si tu suppose que deux threads peuvent vouloir creer le singleton simultanement.
karens Quelqu'un aurait-il deja implemente le design pattern Singleton ?
Un exemple ??
Quelqu'un aurait-il implemente le design pattern Singleton dans un environnement multi-threads ?
Est-ce que vous avez des exemples de codes ou des infos qui pourraient m'aider ???

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)