【问题标题】:Lock Record in Dictionary - ConcurrentDictionary锁定字典中的记录 - ConcurrentDictionary
【发布时间】:2014-07-10 12:35:46
【问题描述】:

多线程应用程序,使用静态字典。用于处理请求,每个请求只能访问一条记录。

处理请求

  1. 读取记录
  2. 计算值的算法
  3. 更新记录。

在需要阻止特定记录的过程中。

static Dictionary<string, InstacneLevel> objlevel; -- Static variable

lock (key)
{
  // need to lock required key 
  // read , Calclulate and update the value for that key
}

我没有找到任何线索,谁能帮帮我。

我可以使用 ConcurrentDictionary 吗??

【问题讨论】:

  • 我不想锁定整个字典,只想锁定一条记录,因为其他线程可以处理其他记录..

标签: c# multithreading dictionary locking concurrentdictionary


【解决方案1】:

简单的答案是“是的,使用并发字典”,但在您这样做之前,请仔细阅读这篇解释其缺陷和性能损失的文章。

http://www.codeproject.com/Articles/548406/Dictionary-plus-Locking-versus-ConcurrentDictionar

【讨论】:

  • 我认为,当我更新并发字典中的值时,它会在内部锁定 d 记录和线程安全。但我没有找到将记录锁定到要执行的特定代码块的选项。
  • 好的,我明白了。在这种情况下,如果 Key 是一个字符串对象,那么编写一个包装类并将字典的实例隐藏在其中作为私有,然后在包装类上实现您自己的 IDictionary 接口(根据需要使用字符串 Key 值使用适当的排他锁根据您的业务逻辑)是要走的路。
  • 好的,我知道了。你有这个实现的参考文章吗?如果是这样,那肯定会有所帮助。谢谢
猜你喜欢
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多