Bloqueos de lector y escritor
La clase ReaderWriterLockSlim habilita a varios subprocesos para leer un recurso de forma simultánea, aunque para escribir en el recurso, el subproceso debe esperar a un bloqueo exclusivo.
Dentro de la aplicación se puede utilizar un ReaderWriterLockSlim para proporcionar una sincronización conjunta entre los subprocesos que tienen acceso a un recurso compartido. Los bloqueos se toman en el mismo ReaderWriterLockSlim.
Al igual que con cualquier mecanismo de sincronización de subprocesos, se debe comprobar que ningún subproceso omite el bloqueo proporcionado por ReaderWriterLockSlim. Una manera de asegurarse es diseñar una clase que encapsule el recurso compartido. Esta clase proporcionaría los miembros que tienen acceso al recurso compartido privado y que utilizan un ReaderWriterLockSlim privado para la sincronización. Para obtener un ejemplo, vea el código de ejemplo que se proporciona para la clase ReaderWriterLockSlim. ReaderWriterLockSlim es bastante eficaz para utilizarse en la sincronización de objetos individuales.
Organice su aplicación con el fin de reducir al mínimo la duración de las operaciones de lectura y escritura. Las operaciones de escritura de larga duración afectan al rendimiento porque el bloqueo de escritura es exclusivo. Las operaciones de lectura de larga duración bloquean el sistema de escritura en espera y, si hay al menos un subproceso en espera de acceso de escritura, entonces los subprocesos que soliciten acceso de lectura también se bloquearán.
Nota |
---|
.NET Framework dispone de dos bloqueos de lector y escritor, ReaderWriterLockSlim y ReaderWriterLock.ReaderWriterLockSlim se recomienda para todos los trabajos de desarrollo nuevos.ReaderWriterLockSlim es similar a ReaderWriterLock, pero tiene reglas simplificadas para la recursividad y para actualizar y degradar el estado del bloqueo.ReaderWriterLockSlim evita muchos casos de interbloqueo potencial.Además, el rendimiento de ReaderWriterLockSlim es significativamente mejor que ReaderWriterLock. |