当我插入唯一键时,我需要在 C# 中使用 ConcurrentDictionary 吗?

dev*_*v27 1 c# multithreading dictionary concurrentdictionary

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

Dod*_*ion 6

不,使用它是不安全的,Dictionary因为它是作为哈希表实现的。因此,当您添加新的唯一键时, add 方法可能会开始重新散列整个字典。如果另一个线程在进行重新散列时同时尝试添加另一个键,则最终可能会得到不一致的数据结构。所以你必须在你的情况下使用 ConcurrentDictionary 。另请参阅 Microsoft 的建议何时使用线程安全集合