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