我Cache在这样的Web服务方法中使用:
var pblDataList = (List<blabla>)HttpContext.Current.Cache.Get("pblDataList");
if (pblDataList == null)
{
var PBLData = dc.ExecuteQuery<blabla>(@"SELECT blabla");
pblDataList = PBLData.ToList();
HttpContext.Current.Cache.Add("pblDataList", pblDataList, null,
DateTime.Now.Add(new TimeSpan(0, 0, 15)),
Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
}
Run Code Online (Sandbox Code Playgroud)
但我想知道,这段代码是否是线程安全的?Web服务方法由多个请求者调用.多个请求者可能会尝试检索数据并Cache在缓存为空时同时添加到数据中.
查询需要5到8秒.是否会围绕此代码引入锁定语句以防止任何可能的冲突?(我知道多个查询可以同时运行,但我想确保一次只运行一个查询.)