Warum ist es besser zu sperren (objLock) als zu sperren (dies) [duplizieren]

8
  

Mögliche Duplikate:
Warum ist lock (this) {. ..} schlecht?

In C # ist es üblich, lock (objLock) zu verwenden, wobei objLock ein Objekt ist, das einfach zum Sperren erstellt wurde.

Warum ist dies vorzuziehen, um (dies) zu sperren? Was sind die negativen Auswirkungen von lock (this) anders als eine Sperre für die Klasse selbst zu entfernen?

    
miguel 21.05.2009, 11:47
quelle

2 Antworten

15

Da etwas anderes die Instanz sperren könnte, hätten Sie einen Deadlock.

Wenn Sie das Objekt, das Sie speziell für diesen Zweck erstellt haben, sperren, wissen Sie, dass Sie die vollständige Kontrolle haben, und nichts anderes wird es unerwartet blockieren.

    
Winston Smith 21.05.2009, 11:49
quelle
2

Wenn Sie etwas public sperren, können sowohl die Klasse als auch eine andere Klasse versuchen, eine Sperre zu erhalten. Es ist einfach genug, ein Sync-Objekt zu erstellen, und immer vorzuziehen;

%Vor%     
Steve Cooper 21.05.2009 12:04
quelle

Tags und Links