Ho una classe che gestisce una risorsa condivisa. Ora, dal momento che l'accesso alla risorsa dipende da molti parametri, questa classe viene istanziata e smaltita più volte durante la normale esecuzione del programma.È sicuro bloccare una variabile statica in una classe non statica?
La risorsa condivisa non supporta la concorrenza, quindi è necessario un qualche tipo di blocco. La prima cosa che mi venne in mente sta avendo un'istanza statica nella classe, e acquisire le serrature su di esso, in questo modo:
// This thing is static!
static readonly object MyLock = new object();
// This thing is NOT static!
MyResource _resource = ...;
public DoSomeWork() {
lock(MyLock) {
_resource.Access();
}
}
Ha senso, o vuoi utilizzare un altro approccio?
Non vorrei bloccare typeof (classe), poiché si potrebbe ottenere un deadlock se qualcun altro si blocca sullo stesso tipo. Almeno, non farlo su tipi pubblici. – driis
@driis: d'accordo, aggiunta una nota nella risposta. Grazie. –
+1 per "Sì puoi ...", -1 per il suggerimento di bloccare su 'typeof (class)', quindi un aggregato 0. – LukeH