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

  FORUM HardWare.fr
  Programmation

  [C++] Design patterns Singleton

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Design patterns Singleton

n°71812
karens
Posté le 13-11-2001 à 14:05:41  profilanswer
 

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 ???

mood
Publicité
Posté le 13-11-2001 à 14:05:41  profilanswer
 

n°71823
BENB
100% Lux.
Posté le 13-11-2001 à 14:39:21  profilanswer
 

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.

n°71852
ayachi
Posté le 13-11-2001 à 16:21:04  profilanswer
 

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 ?

n°71854
BENB
100% Lux.
Posté le 13-11-2001 à 16:27:49  profilanswer
 

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...

n°71860
karens
Posté le 13-11-2001 à 16:55:20  profilanswer
 

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...

n°76210
karens
Posté le 28-11-2001 à 09:54:41  profilanswer
 

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

n°76211
youdontcar​e
Posté le 28-11-2001 à 09:57:05  profilanswer
 

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
 
:??:

n°76224
karens
Posté le 28-11-2001 à 10:47:06  profilanswer
 

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:

n°76225
BENB
100% Lux.
Posté le 28-11-2001 à 10:51:53  profilanswer
 

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...

n°76250
karens
Posté le 28-11-2001 à 12:12:18  profilanswer
 

Oui, je veux une solution threadsafe.
Je pense que je vais utiliser Mutex + peut-etre un double-checking si necessaire.
Merci.
:jap:

mood
Publicité
Posté le 28-11-2001 à 12:12:18  profilanswer
 

n°76394
karens
Posté le 28-11-2001 à 18:46:25  profilanswer
 

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 ?

n°76528
gilou
Modérateur
Modzilla
Posté le 28-11-2001 à 23:33:51  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°76572
gilou
Modérateur
Modzilla
Posté le 29-11-2001 à 10:34:02  profilanswer
 

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


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°76594
karens
Posté le 29-11-2001 à 13:12:21  profilanswer
 

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:

n°76792
gilou
Modérateur
Modzilla
Posté le 30-11-2001 à 01:15:06  profilanswer
 

M'etonnerait qu'on le trouve en ligne; c'est un bouquin assez recent, et assez trappu.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] Design patterns Singleton

 

Sujets relatifs
[cpp] design pattern mementoC++ : Threads & Singleton design pattern
design de tables HTML.[Delphi] jolie jolie design
Plus de sujets relatifs à : [C++] Design patterns Singleton


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR