我有一个包含固定键集合的字典,它是我在程序开始时创建的。后来,我有一些线程用值更新字典。
- 一旦线程开始,就不会添加或删除任何对。
- 每个线程都有自己的 key 。意思是,只有一个线程会访问某个键。
- 线程可能更新值。
问题是,我应该锁定字典吗?
更新:
谢谢大家的回答,
当我问这个问题时,我试图简化情况,只是为了理解字典的行为。
为了清楚起见,这里是完整版: 我有一本包含约 3000 个条目(固定键)的字典,并且我有多个线程访问该键(共享资源),但我知道一个事实,即一次只有一个线程访问一个键条目。
所以,我应该锁定词典吗?并且 - 当您现在拥有完整版本时,字典是否是正确的选择?
谢谢!
最佳答案
来自 MSDN
只要不修改集合,字典可以同时支持多个读者。
要允许集合被多个线程访问以进行读写,您必须实现自己的同步。
有关线程安全的替代方案,请参阅 ConcurrentDictionary<TKey, TValue>.
关于c# - 具有固定键的字典上的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378230/