Ich habe ein Wörterbuch mit Nebenläufigkeitsproblemen, und ich bin angewiesen, keine Sperren zu verwenden, daher habe ich beschlossen, separate Kopien davon für jeden Thread zu erstellen. Da wir .Net 3.5 verwenden, verwende ich ThreadStatic
Schlüsselwort. Mein Problem ist, dass einige der Threads auf das Wörterbuch zugreifen, ohne Daten einzugeben. Wie kann ich das auf einfache Weise lösen?Beheben von Nebenläufigkeitsproblemen ohne Sperre
Derzeit mein Code sieht wie folgt aus:
private static Dictionary<string, int> MyDict_;
[ThreadStatic]
public static Dictionary<string, int> myDict;
public static Dictionary<string, int> MyDict
{
get
{
if (myDict == null)
{
if (MyDict_ != null)
myDict = new Dictionary<string, int>(MyDict_);
else
myDict = new Dictionary<string, int>();
}
return myDict;
}
set
{
myDict = value;
}
}
void Load(CustomData data)
{
if(DictionaryPopulated)
{
LoadInto(myDict,data)
}
else
{
LoadInto(MyDict_,data)
DictionaryPopulated=true;
}
}
Aber mir wurde gesagt, dies unnötig komplex ist. Was wäre ein besserer Weg, dies zu erreichen?
Und Sie dürfen 'ConcurrentDictionary' nicht verwenden? –
Nein ConcurrentDictionary erlaubt –
Ich bin mir nicht sicher, ob ich den Anwendungsfall vollständig verstanden habe, aber wenn einer der Threads in das Wörterbuch schreiben kann, ist dies kein Problem, das Sie ohne Sperren lösen können. sichere Sammlungen, die * sehr * komplex sind) –