gpt4 book ai didi

multithreading - 锁定 HttpRuntime.Cache 以进行延迟加载

转载 作者:行者123 更新时间:2023-12-01 07:12:19 28 4
gpt4 key购买 nike

我们有一个运行 .NET 2.0 的网站,并且已经开始使用 ASP.Net HttpRuntime.Cache 来存储频繁数据查找的结果以减少我们的数据库访问。

片段:


lock (locker)
{
if (HttpRuntime.Cache[cacheKey] == null)
{
HttpRuntime.Cache.Insert(cacheKey, GetSomeDataToCache(), null, DateTime.Today.AddDays(1), Cache.NoSlidingExpiration);
}
return ((SomeData)HttpRuntime.Cache[cacheKey]).Copy();
}

每当我们想查看缓存时,我们都会悲观地锁定。但是,我看到网上发布的各种博客建议您在检查缓存值后锁定,以免产生锁定开销。这似乎不对,因为检查后另一个线程可能已写入缓存。

所以最后我的问题是什么是“正确”的方法来做到这一点?我们甚至使用了正确的线程同步对象吗?我知道 ReaderWriterLockSlim() 但我们正在运行 .NET 2.0。

最佳答案

据我所知 Cache 对象是线程安全的,所以你不需要锁。

关于multithreading - 锁定 HttpRuntime.Cache 以进行延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/447705/

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