14
mars
2007
Avez vous déjà utilisé la classe Interlocked ?
mars
2007
J’avais déjà vu différentes façon d’implémenter de façon « thread safety » le design pattern singleton (je vous conseille d’ailleurs ce site), mais je n’avais encore jamais vu celle utilisée dans la classe SR du Framework :
private static object InternalSyncObject
{
get
{
if (s_InternalSyncObject == null)
{
object obj2 = new object();
Interlocked.CompareExchange(ref s_InternalSyncObject, obj2, null);
}
return s_InternalSyncObject;
}
}
private static SR GetLoader
{
get
{
if (loader == null)
lock (InternalSyncObject)
{
if (loader == null)
loader = new SR();
}
return loader;
}
}
{
get
{
if (s_InternalSyncObject == null)
{
object obj2 = new object();
Interlocked.CompareExchange(ref s_InternalSyncObject, obj2, null);
}
return s_InternalSyncObject;
}
}
private static SR GetLoader
{
get
{
if (loader == null)
lock (InternalSyncObject)
{
if (loader == null)
loader = new SR();
}
return loader;
}
}
Vous retrouverez ceci sur les méthodes conseillées pour la fiabilité.