System.Runtime.Caching.MemoryCache - ist Sperren erforderlich

8

Müssen wir bei der Arbeit mit System.Runtime.Caching.MemoryCache z. Aufruf von Contains(key); oder ist es bereits threadsicher?

    
Ben Foster 08.03.2011, 15:49
quelle

2 Antworten

9

Der Abschnitt "Threadsicherheit" in dem MSDN Library-Artikel zu einer Klasse dokumentiert dies:

  

Für alle Instanzmitglieder ist nicht garantiert, dass sie threadsicher sind.

Dies ist normal für .NET-Klassen, die Dokumentation ist vorbildlich und in einigen wenigen Fällen nicht aussagekräftig. Das war auch bei MemoryCache der Fall, bis die Dokumentation aktualisiert wurde. Der von Davide verlinkte Connect-Feedback-Artikel ist hilfreich, um dies zu klären:

  

System.Runtime.Caching.MemoryCache ist threadsafe. Mehrere gleichzeitig   Threads können eine MemoryCache-Instanz lesen und schreiben. Im Inneren   Thread-Sicherheit wird automatisch behandelt, um sicherzustellen, dass der Cache aktualisiert wird   in einer einheitlichen Art und Weise.

     

Worauf es sich möglicherweise bezieht, sind die Daten, die im Cache gespeichert sind   kann selbst nicht threadsicher sein. Zum Beispiel, wenn eine Liste eingefügt wird   Der Cache und zwei separate Threads erhalten beide einen Verweis auf den Cache   Liste, die zwei Threads werden aufeinander treffen, wenn sie   beide versuchen, die Liste gleichzeitig zu aktualisieren.

    
Hans Passant 08.03.2011, 16:05
quelle
6

Laut der neuen Dokumentation ist die MemoryCache-Klasse Thread-sicher.

MSDN

Microsoft verbinden

    
Davide Icardi 30.03.2011 08:58
quelle

Tags und Links