Static constructors?
    awishformore 
    awishformore at nospam.plz
       
    Wed Jul 21 17:00:21 PDT 2010
    
    
  
I have a question to static constructors in D2 and with threads.
-LogManager.d-
import std.stdio;
final class LogManager
{
	private:
		static __gshared LogManager instance;
		
	public:
	
		static this()
		{
			instance = new LogManager();
			writefln("New LogManager instance created.");
		}
	
		static ~this()
		{
			instance = null;
		}
		static LogManager opCall()
		{
			return instance;
		}
}
-end-
As stated in the docs, the static constructor is supposed to be executed 
before main. However, over the course of my application, every time I 
use the LogManager in a new thread, the static constructor will be 
executed again. Afaik this means that I have one static instance per 
thread, which is not at all which I would expect, especially considering 
the fact that instance is declared as __gshared (fyi: shared doesn't 
make a difference either).
Is this a bug? If not, could someone explain why the behaviour is different?
Thanks, Max.
    
    
More information about the Digitalmars-d-learn
mailing list