锁定单个字典条目而不是整个字典?

发布于 2024-11-02 06:19:12 字数 325 浏览 0 评论 0 原文

假设我有一个 static Dictionary> 并且想要执行类似以下操作,但我只想锁定我所在的特定字典条目目前正在处理而不是整个字典:


lock(myDictionary)
{
   if(myDictionary["myKey"] == null)
   {
      myDictionary["myKey"] = new MyClass();
   }
}

如果不编写我自己的字典实现,这可能吗?

谢谢,

Say I have a static Dictionary<string, object> and want to do something like the following, except I only want to lock the specific dictionary entry that I'm currently dealing with instead of the entire dictionary:


lock(myDictionary)
{
   if(myDictionary["myKey"] == null)
   {
      myDictionary["myKey"] = new MyClass();
   }
}

Is this possible without writing my own Dictionary implementation?

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

空心空情空意 2024-11-09 06:19:12

您可以使用新的 ConcurrentDictionary 类。它通过比锁定整个字典更细粒度的方式锁定,有效地提供了线程安全性。

You can use the new ConcurrentDictionary<TKey,TValue> class. It effectively provides thread safety by locking in a much finer grained manner than locking on the entire dictionary.

伴我心暖 2024-11-09 06:19:12

在您的情况下,仅“锁定特定字典条目”是没有意义的;即使您编写自己的实现。如果您不知道该条目是否存在,并且在这种情况下想要将其添加到字典中,则始终必须同步对字典控制结构的访问。换句话说,即使您自己实现它,也需要同步对其内部结构的至少某一部分的访问。

In your case it makes no sense to “lock the specific dictionary entry” only; even if you write your own implementation. If you don't know if the entry exists and you want to add it into the dictionary in such a case, you will always have to synchronize access to the dictionary's control structures. In other words, even if you implement it yourself, there will be a need to synchronize access to at least a certain portion of its internal structures.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文