在 ConcurentDictionary 上枚举



如果我在多线程访问方法中使用ConcurentDictionary dic,我可以确保在这样的结构中:

foreach (Subscription sub in subscriptions[ex].Values)
                    {
                      ....
                    }

subscriptions ConcurrentDictionary<string, ConcurrentDictionary<long, Subscription>>通过多种方法运行时不会改变,以便进行线程保存?或者我应该像这样使用锁:

lock(padLock)
{   
foreach (Subscription sub in subscriptions[ex].Values)
                        {
                          ....
                        }
}

使其正常工作?

ConcurrentDictionary 的所有公共和受保护成员 是线程安全的,可以从多个线程并发使用。

所以是的,即使其他线程在您迭代 Values 集合时修改了它,您也不会安全。

通过修改,我的意思是它添加新对或更改字典中的现有值。

相关内容

  • 没有找到相关文章

最新更新