Wie erhalte ich ein Update, Exclusive lock? Artikel states, dass "ein Benutzer nach einer Update-Sperre anstelle der Shared-Sperre fragen kann", aber ich habe keine Möglichkeit gefunden, den Sperrentyp anzugeben.Wie erhalte ich eine bestimmte Sperre?
Derzeit habe ich ein Wörterbuch, das Listen speichert. Mein Ziel ist: wenn jemand nur die Liste liest - machen wir einen Schnappschuss und blockieren niemanden sonst. Wenn jemand die Liste ändert - nehmen wir eine Exclusive-Sperre oder vielleicht eine Update-Sperre (ehrlich gesagt kann ich keinen Unterschied finden) und alle anderen sollten warten, bis die Transaktion läuft, sogar Lesevorgänge sollten nicht möglich sein. Das Detail, das ich nicht verstehen kann, ist: wie man das spezifiziert, wenn die Absicht nur zu lesen ist, als das Lesen der Sammlung zu erlauben, und wann Absicht ist, zu lesen und dann zu schreiben (wir sind nicht in der Lage, existierende zu ändern) Daten auf andere Weise), dann sollte diese Transaktion alle Sperren warten und erst dann die Sammlung erfolgreich lesen und ändern.
Würde ein [ConcurrentDictionary] (https://msdn.microsoft.com/en-us/library/dd997369 (v = vs.110) ASPX) in Ihrem Szenario arbeiten? –
@AndrewMorton, nein, ConcurentDictionary dient einem anderen Zweck ist nicht für verteilte Systeme geeignet. Selbst wenn es eine geeignete zuverlässige Sammlung gäbe, würde ich gerne Dinge mit Sperren und Transaktionen herausfinden. – cassandrad