[Mono-devel-list] What to do with TypeInitialization in case of exceptions on second attempt to access class ? Singleton pattern
Kamil Skalski
nazgul at nemerle.org
Mon Oct 25 17:40:47 EDT 2004
Dnia poniedziałek, 25 października 2004 23:29, gennady wexler napisał:
> you need to exit lock() before you return, otherwise you lock in critical
> section forever.
>
> perhaps like this?
>
> public static Singleton Instance {
> get {
> lock (typeof(Singleton)) {
> if (Singleton.instance == null)
> Singleton.instance = new Singleton();
> }
> return Singleton.instance;
> }
> }
It does not matter. lock statement is translated to
System.Threading.Monitor.Enter ($x);
try {
$body
} finally {
System.Threading.Monitor.Exit ($x);
}
So lock is released automatically before return.
--
Kamil Skalski
http://nemerle.org developer
More information about the Mono-devel-list
mailing list