比如: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 關注
- 676 瀏覽
添加回答
舉報
0/150
提交
取消