In .Net quando dobbiamo creare applicazioni multithread siamo soliti utilizzare l'istruzione lock per sincronizzare l'accesso alle risorse condivise.
Questo potrebbe non essere l'approccio più corretto se si eseguono molte letture e poche scritture perchè costringiamo i vari thread ad accedere alla risorsa anche in lettura uno alla volta.
La classe ReaderWriterLock ci aiuta a inserire i lock solo quando necessari e permette accessi multipli in lettura e accessi singoli in scrittura.
Vi rimando ad MSDN per una trattazione dell'argomento più dettagliata.
http://msdn2.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx
http://msdn2.microsoft.com/en-us/magazine/cc163846.aspx