如果我在多线程访问方法中使用 ConcurentDictionary dic,我可以确定在这样的构造中:
foreach (Subscription sub in subscriptions[ex].Values)
{
....
}
subscriptions
是不是ConcurrentDictionary<string, ConcurrentDictionary<long, Subscription>>
通过几种方法运行时都不会改变,所以它会被线程保存?或者我应该像这样使用锁:
lock(padLock)
{
foreach (Subscription sub in subscriptions[ex].Values)
{
....
}
}
让它正常工作?