2011-02-28 51 views
5

这可能只是一个理论上的问题,但我一直没能找到满意的答案。代码执行期间缓存(或其他变量)是否可以更改?

我用我的网站这让我想到了它的一个缓存的数据,并在如果它的变化。在执行某些代码期间高速缓存是否可以更改?

下面是一个例子

if (Cache["name"] != null) { 

    // Long and heavy code execution done here 

    if (Cache["name"] == null) Response.Write("Lost the data"); 
} 

可以在与上面的代码更改并行高速缓存运行或它等待,直到它完成的过程?
是否有一个理论的机会,这将打印“丢失的数据”?

如果是,它总是好的做法,以保存可变第一经常检查永不不为空

在此先感谢!

/尼克拉斯

回答

4

绝对可以。从缓存中

始终快照值,和工作与快照:

var snapshot = Cache["name"]; 
if(snapshot != null) {...} 

,并使用snapshot贯穿始终。当涉及到螺纹,上面是通常一个理智的方式;唯一需要注意的被你可能想看看Interlocked了一系列的让你看到(安全),而你不找一个变量/字段是否改变方法,只适用于改变它,它并没有改变。

+0

马克,因为你在这里。你介意回答我对RBAC的最新评论,你在这个星期五帮助我=)? – Niklas 2011-02-28 12:53:53

0

它肯定会过期,因此在使用它之前应该先检查null。正如你所说,保存一份保存的副本是很好的。

相关问题