彼ら、
以下の次のコードを評価していただきたいと思います。ご覧のとおり、私はInterlocked.CompareExchangeを使用していますが、このコンテキストでは意味がありますか?(それが正しいかどうかはわかりません)。
メモやコメントなどはよろしくお願いします。
private static T GetItem<T>(string cacheKey, Func<T> getItemCallback) where T : class
{
var item = (HttpRuntime.Cache.Get(cacheKey) as T);
if (item != null)
{
return item;
}
item = getItemCallback.Invoke();
if (item != null)
{
HttpContext.Current.Cache.Insert(cacheKey, item);
}
return item;
}
public T Get<T>(string cacheKey, Func<T> getItemCallback) where T : class
{
var item = (HttpRuntime.Cache.Get(cacheKey) as T);
if (item != null)
{
return item;
}
Interlocked.CompareExchange(ref item, GetItem(cacheKey, getItemCallback), null);
return item;
}
よろしくお願いします。