synchonized? correct use? Thread-safe Singleton
BCS
ao at pathlink.com
Fri Jan 4 09:45:35 PST 2008
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)));
}
More information about the Digitalmars-d-learn
mailing list