我在插入唯一键时是否需要在C#中使用ConcurrentDictionary?

时间:2018-01-19 17:43:31

标签: c# multithreading dictionary concurrentdictionary

我有一个场景,所有线程只会在字典中插入唯一键。换句话说,没有两个线程会插入相同的密钥。我也没有任何更新或读取操作。它只是插入。在这种情况下我需要ConcurrentDictionary吗?

1 个答案:

答案 0 :(得分:3)

不,使用<Route key='breadcrumbs' path='((?!category).)*' component={BreadcrumbsComponent} /> 并不安全,因为implemented as a hash table。因此,当您添加新的唯一键时,add方法可能会开始重新整理整个字典。如果另一个线程在重新发送过程中同时尝试添加另一个键,则最终可能会出现不一致的数据结构。所以你必须在你的情况下使用ConcurrentDictionary。另请参阅Microsoft的建议When to use a thread-safe collection