A .Net4 Gem:ConcurrentDictionary - Tips&技巧

时间:2010-04-20 19:44:10

标签: .net .net-4.0 concurrency

我开始使用.Net4中的新ConcurrentDictionary为线程项目实现一个简单的缓存。

但我想知道在使用它时需要注意什么/小心?

您使用它的经历是什么?

3 个答案:

答案 0 :(得分:20)

成员是线程安全的,但您不应期望一系列调用是线程安全的。例如,您不能指望以下内容是线程安全的:

if (!dictionary.ContainsKey(key))
{
    // Another thread may have beaten you to it
    dictionary.Add(key, value);
}

相反,使用新的线程安全API - 例如 AddOrUpdate(最后一个在比赛条件下获胜)或GetOrAdd(在比赛条件下第一个获胜)。

答案 1 :(得分:2)

到目前为止,我对Concurrent集合对象没有任何问题。通过允许我担心集合的并发问题并专注于编写应用程序逻辑,它们极大地提高了我的工作效率。

这并不是说没有问题。我什么都没碰到。

答案 2 :(得分:-1)

ConcurrentDictionary是线程安全的。即使从多个线程使用它,您也不必担心它。