C # Threading & Blocking [закрыто]
Мне интересно, какой из них лучше подходит для загрузки данных потокобезопасным способом. Традиционно я использовал шаблон двойного замка, и это вполне соответствовало цели. Теперь, с добавлением типа System.Lazy, меня интересует, лучше ли полагаться на внутренние компоненты Lazy и Loading и выполнять работу намного лучше. Это выглядит чище и легче для чтения, но лучше ли?
Какие-нибудь мысли?
namespace SomeNameSpace
{
public class DataStoreContext
{
private readonly static Lazy context = new Lazy(() => new DataStoreContext());
private Lazy _entities = new Lazy(() => { return DataStoreContext.Instance.Load(); });
private readonly object _syncRoot = new object();
private DataStoreContext()
{
}
public Dictionary Data
{
get { return _entities.Value; }
}
public static DataStoreContext Instance
{
get { return context.Value; }
}
private Dictionary Load()
{
// Load Data from some data store.
return null;
}
private Dictionary LoadWithLock()
{
if (_entities == null)
{
lock (_syncRoot)
{
if (_entities == null)
{
Dictionary entities = this.Load();
_entities = entities;
return _entities;
}
}
}
return _entities ;
}
public void Clear()
{
_entities = new Lazy(() => { return DataStoreContext.Instance.Load(); });
}
}
}