Perhaps the thread-safety of static constructors was not known to these developers. I don't see how a function can be guaranteed to be executed only once, and be thread unsafe. Makes no sense. They can delete the lock code here.
The article about singletons (on msdn) also said static constructors are thread-safe. Regards, Frank Hileman Prodige Software Corporation ----- Original Message ----- From: "Peter Lillevold" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, June 18, 2002 5:56 AM Subject: Re: [ADVANCED-DOTNET] Singleton pattern > Actually, I have an example fetched from the tracer routines of Duwamish > where the static constructor makes sure no other thread is excecuting the > samme constructor. > Check out the code below. > > static TraceHelper() > { > > //Get the class object in order to take the initialization lock > Type myType = typeof(TraceHelper); > > //Protect thread locks with Try/Catch to guarantee that we let > go of the lock. > try > { > //See if anyone else is using the lock, grab it if they//re > not > if (!Monitor.TryEnter(myType)) > { > //Just wait until the other thread finishes processing, > then leave if > // the lock was already in use. > Monitor.Enter(myType); > return; > } > > // Do some init of static member variables > } > finally > { > //Remove the lock from the class object > Monitor.Exit(myType); > } > } > > - Peter Lillevold > > -----Original Message----- > From: Stefan Avramtchev [mailto:[EMAIL PROTECTED]] > Sent: 18. juni 2002 14:47 > To: [EMAIL PROTECTED] > Subject: Re: [ADVANCED-DOTNET] Singleton pattern > > > I think the type contructors is thread safe. > > How otherwise is the framework guarding this rule if not by locking some > internal object (not the being-initialised class ofcourse) in order to > guarantee that only one thread runs inside the type contructor? > > > stef > > > On Fri, 14 Jun 2002 15:01:22 -0700, Keith Hill <[EMAIL PROTECTED]> > wrote: > > >>> >"The static constructor for a class executes at most one time > >>> >during a single program instantiation" > > > >The more I think about it, the statement above does not imply thread- > >safety, at least not to me. Can someone confirm that static > >constructors are indeed thread-safe? > > > >-- > >Keith > > > > You can read messages from the Advanced DOTNET archive, unsubscribe from > Advanced DOTNET, or subscribe to other DevelopMentor lists at > http://discuss.develop.com. > > You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced DOTNET, or > subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.