A .Net4 Gem:ConcurrentDictionary - 提示和技巧

SDR*_*yes 12 .net concurrency .net-4.0

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

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

你使用它的经历是什么?

Joe*_*Joe 20

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

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

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