Wie bereits von Jon Skeet erwähnt, gibt es jetzt im System.Collections.Concurrent-Namespace in .NET 4. "
" Thread-sichere Auflistungen
Einer der Gründe, dass keine gleichzeitige Sammlungen existieren (zumindest meine Vermutung) in früheren.NET Framework-Versionen ist es sehr schwierig, Thread-Sicherheit zu garantieren, selbst bei gleichzeitiger Sammlung.
(Dies ist nicht ganz richtig, da einige Sammlungen ein synchronisiertes Verfahren bieten einen Thread sichere Sammlung von einer nicht-Thread-sicher Sammlung zurück, so gibt es einige Thread sichere Sammlungen sind ...)
Zum Beispiel davon ausgehen, man hat ein threadsicheres Dictionary - wenn man nur zu einer Einfügung möchte, wenn der Schlüssel nicht existiert, würde man zuerst die Sammlung abfragen, um zu sehen, ob der Schlüssel existiert, dann würde man eine Einfügung machen, wenn der Schlüssel nicht existiert. Diese beiden Operationen sind jedoch nicht Thread-sicher, da zwischen der Abfrage von ContainsKey und der Add-Operation ein anderer Thread eine Einfügung dieses Schlüssels hätte durchführen können, so dass es eine Race-Bedingung gibt.
Mit anderen Worten sind die Operationen der Sammlung threadsicher - aber die Verwendung ist nicht unbedingt notwendig. In diesem Fall müsste man zu traditionellen Verschlusstechniken (Mutex/Monitor/Semaphore ...) zurückkehren, um Thread-Sicherheit zu erreichen, so dass die gleichzeitige Sammlung nichts in Bezug auf Multithread-Sicherheit gekauft hat (ist aber wahrscheinlich schlechter für die Leistung) .
Große Antwort - ich werde dieses "unbeantwortete" für eine kurze Zeit verlassen, um es auf dem Radar zu halten. Wenn jemand weitere Links zu Artikeln über Pre- oder Post-4.0-Status zu diesem Thema hat, dann bitte. Danke euch allen. – Andrew