我开始使用.Net4中的新ConcurrentDictionary为线程项目实现一个简单的缓存。
但我想知道在使用它时需要注意什么/小心?
您使用它的经历是什么?
答案 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是线程安全的。即使从多个线程使用它,您也不必担心它。