ich die folgende Sperre Aussage haben:Soll eine Sperrvariable als flüchtig deklariert werden?
private readonly object ownerLock_ = new object();
lock (ownerLock_)
{
}
Sollte ich volatile Schlüsselwort für meine Sperrvariable?
private readonly volatile object ownerLock_ = new object();
Auf MSDN sah ich, dass es in der Regel für ein Feld verwendet, die ohne Verriegelung zugegriffen wird, also wenn ich sperren verwenden Ich brauche nicht flüchtig zu benutzen?
Von MSDN:
Der flüchtige Modifikator wird in der Regel für ein Feld verwendet, die von mehrere Threads ohne Verwendung der lock-Anweisung zugegriffen wird, Zugang zu serialisieren.
Wir brauchen viel mehr Kontext als das, um die Frage zu beantworten. Wo besteht dieses Schloss in Bezug auf die Objekte, die das Schloss benutzen? –
Es ist definitiv Thread-Safe, wie es derzeit existiert. Keine Garantie wird möglich sein, wenn Sie Code innerhalb des Blocks sperren {} hinzufügen. –
Sie sollten kein 'readonly'-Objekt sperren müssen ... in dem es' readonly' ist ... – NominSim