Angenommen ich ein Objekt A haben, enthaltendSperrbereich in C#: Ist das zurückgegebene Objekt immer noch "gesperrt"?
// ...
private List<double> someList = new List<double>();
// ...
public List<double> SomeList
{
get { lock (this) { return someList; } }
}
// ...
wäre es threadsicher sein, den Betrieb auf der Liste, wie in der nachfolgenden Code auszuführen. Wissend, dass mehrere Operationen gleichzeitig von verschiedenen Threads ausgeführt werden können.
A.SomeList.Add(2.0);
oder
A.SomeList.RemoveAt(0);
Mit anderen Worten, wenn die Verriegelung gelöst?
Sie sollten niemals ein Objekt sperren, das außerhalb Ihrer Klasse sichtbar ist, z. B. 'this'. – svick
Ok, fair genug. Angenommen, ich sperre ein Objekt ein, das nicht nach außen hin frei ist. –
@svick warum nicht? – surfen