比如:if(cache["key"]==null){ lock(this) { if(cache["key"]==null) { cache.Insert("key",func()) } }}这边的func 是有返回结果的一个委托代码大概是这么一个逻辑,但是如果其中有一个key的委托如果执行很久的话,那不是其他地方的缓存都要等这个委托执行完,那不是我不需要访问这个缓存的也要等这个委托执行完把lock解开,不知道有没有办法可以就是各个不同名称的缓存的lock互不受影响
1 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
那你就需要lock不同的锁,不如我有2个角色,需要修改信息,这2个觉得都有guid这个唯一标示,
这个时候,我可以lock(string.Intern(guid.tostring()))
{
do somethings。这样的话就单独的lock各自的对象。
}
可以先了解一下啊string.intern这个方法。
- 1 回答
- 0 关注
- 651 浏览
添加回答
举报
0/150
提交
取消