首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锁定对象字典,释放不需要的项目?

锁定对象字典,释放不需要的项目?
EN

Stack Overflow用户
提问于 2014-06-22 19:49:21
回答 1查看 64关注 0票数 0

我需要同步一个关键部分,但前提是代码使用相同的数据(由对象的is确定)。这就是为什么我实现了一个锁对象容器,它基于字符串标识符动态创建锁对象。锁对象存储在字典中,如果有人要求一个具有相同密钥的对象,则重新使用。

问题是,锁定键和锁对象的组合数以百万计,它们目前停留在字典中,并且永远占用内存。

如何设计这样的字典,以便它删除不必要的锁对象,从而释放内存?

我的想法:

  1. 将锁对象存储为弱引用,并在字典中遍历一次,并删除值所在的键!IsAlive
  2. 将锁对象存储为弱引用,但这一次在LockObject类中实现终结器,并在字典启动时从字典中移除键。

我还有别的选择吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-30 08:44:53

我知道这个问题很老,但是如果有人偶然发现了这个问题,并且有同样的问题,请看一下AsyncKeyedLock,它解决了这个问题。您可以使用:

代码语言:javascript
复制
using (await _locker.LockAsync(myObject.Id))
{
   ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24355097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档