c# - 具有固定键的字典上的多线程

标签 c# multithreading dictionary

我有一个包含固定键集合的字典,它是我在程序开始时创建的。后来,我有一些线程用值更新字典。

  • 一旦线程开始,就不会添加或删除任何对。
  • 每个线程都有自己的 key 。意思是,只有一个线程会访问某个键
  • 线程可能更新值

问题是,我应该锁定字典吗?

更新:

谢谢大家的回答,

当我问这个问题时,我试图简化情况,只是为了理解字典的行为。

为了清楚起见,这里是完整版: 我有一本包含约 3000 个条目(固定键)的字典,并且我有多个线程访问该键(共享资源),但我知道一个事实,即一次只有一个线程访问一个键条目。

所以,我应该锁定词典吗?并且 - 当您现在拥有完整版本时,字典是否是正确的选择?

谢谢!

最佳答案

来自 MSDN

只要不修改集合,字典可以同时支持多个读者。

要允许集合被多个线程访问以进行读写,您必须实现自己的同步。

有关线程安全的替代方案,请参阅 ConcurrentDictionary<TKey, TValue>.

关于c# - 具有固定键的字典上的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378230/

相关文章:

java - 线程崩溃后的状态是什么?

c++ - std::map 自定义键非唯一性问题

Java锁定结构最佳模式

java - 两个线程一个同步方法scjp

arrays - 我想将具有属性(btnImage + btnTitle)的字典数组从Plist读取到TableViewCell中

dictionary - 在 Hazelcast 中创建另一个 map 函数?

c# - 如何调试 C# 命令行程序

c# - 在特定表中添加新行时刷新客户端浏览器

c# - 在 Dictionary<DateTime, double> 中查找最接近的 DateTime 键

c# - 如何在不创建新刷新 token 的情况下使用刷新 token 更新 Owin 访问 token ?