synchonized? correct use? Thread-safe Singleton
BLS
nanali at nospam-wanadoo.fr
Fri Jan 4 10:28:44 PST 2008
BCS schrieb:
> Reply to bls,
>
>> Do I have a THread-safe singleton ? If not HowTo.. Sorry. Sean K
>> allready explains it to me, but I 've lost the info. :(
>> Bjoern
>> class Singleton(T)
>> {
>> public:
>> static T instance()
>> sychronized // according to the language spec this should
>> work
>> {
>> if(_instance is null) _instance = new T;
>> return _instance;
>> }
>> private:
>> this() {}
>> static T _instance;
>> }
>> class Application : Singleton!(Application)
>> {
>> }
>
> I think this will fail because Singleton!(Application).instance() will
> call Application's this() and that is private.
>
> IMHO, a better approach (that I haven't tested) would be to use a mixin:
>
> template Singleton(T)
> {
> public:
> static T instance() sychronized
> // according to the language spec this should work
> {
> if(_instance is null) _instance = new T;
> return _instance;
> }
> private:
> this() {}
> static T _instance;
> }
>
> class Application : Singleton!(Application)
> {
> mixin(Singleton!(typeof(this)));
> }
>
>
Thanks BCS,
Confused ...'cause virus infected (me) not the pc
class Application : Singleton!(Application)
{
mixin(Singleton!(typeof(this)));
this()
{
return instance(this)
}
}
Honk, that stinks somehow !
Hope I ask not for too much, but please explain the use of the mixin
Bjoern
More information about the Digitalmars-d-learn
mailing list