Seguo principalmente lo schema IDisposable
e per la maggior parte delle classi giustificato. Ma ReaderWriterLockSlim
mi ha fatto dubitare della fattibilità dell'applicazione di tale modello. Tutto lo ReaderWriterLockSlim.Dispose
fa chiudere alcuni handle di evento. Quindi, quanto è importante la classe Dispose
con così poche risorse? In questo caso, non mi dispiacerebbe davvero se il GC dovesse aspettare un altro giro per finire i finalizzatori delle risorse non gestite.Quanto "usa e getta" è ReaderWriterLockSlim?
Le conseguenze per l'applicazione del modello IDisposable
sono considerevoli, tuttavia, ogni classe che utilizza una classe usa e getta ora deve implementare anche IDisposable
. Nel mio caso particolare, sto implementando un wrapper per HashSet
. Non mi aspetto particolarmente il requisito di disporre di tale oggetto perché, accidentalmente, utilizza un sincronizzatore che lo fa.
Ci sono motivi per non violare lo schema monouso in questo caso? Mentre sono ansioso, non lo farei in pratica, perché la violazione della coerenza è molto peggio.
Il tuo problema è che usi un blocco non statico con la stessa durata dei tuoi oggetti? –
@NathanCooper - Approssimativamente, sì. Anche l'istanziazione di un blocco per ogni operazione di lettura/scrittura non è molto efficiente. Potrei usare 'Monitor', ma mi preoccupo per i convogli di blocco. – toplel32
quindi stai leggendo o scrivendo qualcosa e non è statico? Quindi è una risorsa per ogni istanza. –