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

时间:2011-04-19 22:52:12

标签: c# thread-safety locks

假设我有一个static Dictionary<string, object>并希望执行以下操作,除了我只想锁定我正在处理的特定字典条目而不是整个字典:

<string, object

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

谢谢,

3 个答案:

答案 0 :(得分:6)

您可以使用新的ConcurrentDictionary<TKey,TValue>课程。它通过以比锁定整个字典更精细的方式锁定来有效地提供线程安全性。

答案 1 :(得分:1)

答案 2 :(得分:1)

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