Pensez à utiliser ReaderWriterLock si vous avez beaucoup de fils que seulement besoin de lire les données et ces threads sont bloqués en attendant le verrou et vous n'avez pas souvent besoin de changer les données.
Cependant, ReaderWriterLock peut bloquer un thread qui attend d'écrire pendant un long moment.
Par conséquent, n'utilisez ReaderWriterLock qu'après avoir confirmé vous obtenez haute contention pour la serrure en " la vie réelle "et vous avez confirmé que vous ne pouvez pas modifier votre conception de verrouillage pour réduire la durée de maintien du verrou .
Demandez-vous également si vous ne pouvez pas plutôt stocker les données partagées dans une base de données et la laisser s'occuper de tous les verrouillages, car cela risque beaucoup moins de vous donner du fil à retordre dans la recherche de bogues, si une base de données est suffisamment rapide pour votre application.
Sur certains cas Vous pouvez également utiliser le cache d'Aps.net pour gérer les données partagées, et simplement retirer l'élément du cache lorsque les données changent. La lecture suivante peut mettre une nouvelle copie dans le cache.
Souvenez-vous de
"Le meilleur type de verrouillage est celui dont verrouillage dont vous n'avez pas besoin (c'est-à-dire que vous ne partagez pas de données entre les threads)."