gpt4 book ai didi

c# - 使用 Interlocked.CompareExchange

转载 作者:太空宇宙 更新时间:2023-11-03 21:58:57 25 4
gpt4 key购买 nike

伙计们,

我希望您评估下面的下一个代码。如您所见,我使用 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;
}

提前致谢。

最佳答案

不,在这种特殊情况下使用 CompareExchange 没有意义 - 局部变量只能从当前线程按原样访问。该行可以替换为:

 item =  GetItem(cacheKey, getItemCallback);

我会考虑使用 CompareExchange() 来访问类中的字段。

关于c# - 使用 Interlocked.CompareExchange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com