c # Thread sichere tiefe Kopie

8

Ich habe viel andere Fragen sowie viele Google-Suchen gelesen und ich konnte keine klare Lösung finden.

Basierend auf einigen Best Practices, die ich gelesen habe, sollten die statischen Methoden einer Klasse threadsicher erstellt werden und die Instanzmitglieder sollten Thread-Sicherheit den Konsumenten überlassen.

Ich möchte eine tiefe Kopiermethode für die Klasse implementieren. Die Klasse selbst hat andere Referenztyp-Mitglieder. Gibt es eine Möglichkeit, den Thread für die tiefe Kopiermethode sicher zu machen, ohne den Aufwand für alle instanzierten Member der Klasse aufzuerlegen?

    
Sait 19.05.2011, 01:14
quelle

1 Antwort

0

Was das Klonen angeht, hat der Stapelüberlauf bereits eine gute Antwort.

Klonen von Objekten

Was die Threadsicherheit betrifft, würde ich mir vorstellen, dass die einzige Garantie darin besteht, dass Sie während der Kopie Locks um Ihre Membervariablen setzen.

Aktualisierung:

Ok, ich habe etwas recherchiert. Ich denke, der eleganteste Weg, um die Threadsicherheit Ihrer Mitglieder zu gewährleisten, besteht darin, dass die aufrufenden Threads Sperren für das Objekt halten, anstatt es in Ihrer Klasse zu implementieren. Implementieren Sie auch die ICloneable-Schnittstelle und dann können Sie einfach eine binäre Kopie des gesamten Objekts erstellen. Siehe die Antwort in dem Link, den ich oben gepostet habe. Natürlich können Sie auch problemlos Sperren für Ihre statischen Mitglieder in Ihrer Klasse implementieren.

    
Jonathan Henson 19.05.2011, 02:02
quelle