2010-04-20 7 views
12

Ich begann, das neue ConcurrentDictionary von .Net4 zu verwenden, um ein einfaches Caching für ein Threading-Projekt zu implementieren.Ein .Net4 Gem: Das ConcurrentDictionary - Tipps & Tricks

Aber ich frage mich, was ich beachten muss/vorsichtig sein bei der Verwendung?

Welche Erfahrungen haben Sie dabei gemacht?

Antwort

20

Mitglieder sind Thread-sicher, aber Sie sollten nicht erwarten, dass eine Folge von Threads Thread-sicher ist. Sie können zum Beispiel die folgenden sein Thread-sicher nicht erwarten:

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

Verwenden Sie stattdessen die neue Thread-sichere API - z.B. AddOrUpdate (der letzte gewinnt im Falle eines Rennens) oder GetOrAdd (der erste gewinnt im Falle eines Rennens).

+0

Sehr nützlich Joe Danke! +1 – SDReyes

+0

Dies ist eine viel bessere Antwort als die angenommene Antwort. – Martin

+0

Ich werde jetzt auf weitere Antworten warten, Martin. Danke:) – SDReyes

-1

ConcurrentDictionary ist Thread-sicher. Sie müssen sich darüber keine Gedanken machen, auch wenn Sie es aus mehreren Threads verwenden.

+0

Die in 'GetOrAdd()' und 'AddOrUpdate()' verwendeten Factory-Methoden sind nicht threadsicher, hier ist noch Nachdenklichkeit gefragt. – roken

2

Ich hatte bis jetzt keine Probleme mit den Sammlungsobjekten Concurrent. Sie sind ein großer Schub für meine Produktivität, indem sie mir nicht Sorgen über Nebenläufigkeit Probleme mit den Sammlungen und konzentrieren sich auf das Schreiben von Anwendungslogik.

Das soll nicht heißen, dass es keine Probleme gibt. Nur nichts, dem ich begegnet bin.

+0

Danke Chaos +1 – SDReyes

Verwandte Themen