Compartir a través de


Ejemplo Reader-Writer Synchronization Technology

Actualización: noviembre 2007

Este ejemplo muestra el uso de la clase de sincronización de subprocesos ReaderWriterLock. La funcionalidad del tipo ReaderWriterLock permite al desarrollador escribir código que exija el acceso exclusivo a un recurso compartido mientras un subproceso escribe o modifica el recurso, pero permita el acceso no exclusivo al leer o consultar el recurso.

Para obtener más información sobre el uso de los ejemplos, consulte los temas siguientes:

Download sample

Para generar el ejemplo desde el símbolo del sistema

  1. Abra una ventana del símbolo del sistema y navegue hasta el subdirectorio específico de uno de los lenguajes para tener acceso al ejemplo.

  2. Escriba msbuild ReaderWriterSynchronizationCS.sln o msbuild ReaderWriterSynchronizationVB.sln en la línea de comandos, en función del lenguaje de programación elegido.

Para generar el ejemplo mediante Visual Studio

  1. Abra el Explorador de Windows y navegue hasta el subdirectorio específico de uno de los lenguajes para tener acceso al ejemplo.

  2. Haga doble clic en el icono de ReaderWriterSynchronizationCS.sln o ReaderWriterSynchronizationVB.sln, dependiendo del lenguaje de programación elegido, para abrir el archivo en Visual Studio.

  3. En el menú Generar, haga clic en Generar solución.

Para ejecutar el ejemplo

  1. Navegue hasta el directorio que contiene el nuevo archivo ejecutable.

  2. Escriba ReaderWriter.exe en la línea de comandos.

    Nota:

    Este ejemplo genera una aplicación de consola. Para poder ver el resultado, debe iniciarla desde el indicativo del sistema. Al ejecutar el ejemplo, observe que el resultado Start Writing y Stop Writing de cada sistema de escritura se produce correctamente. Esto se debe a que los sistemas de escritura tienen acceso exclusivo al recurso, a diferencia de los sistemas de lectura.

Comentarios

Para obtener más información sobre la sincronización de subprocesos y el acceso exclusivo, lea los comentarios de los archivos del código fuente y de build.proj.

Las viñetas siguientes describen brevemente las clases y las tecnologías que se utilizan en este ejemplo.

  • Sincronización de subprocesos

ReaderWriterLockSe utiliza para proteger un recurso lógico implementado como llamada a Sleep. Los subprocesos que utilizan el tipo ReaderWriterLock pueden contener el bloqueo de dos maneras diferentes. En primer lugar, un subproceso puede contener un bloqueo de lectura, que es no exclusivo, y permitirá a otros subprocesos obtener un bloqueo de lectura para la clase. En segundo lugar, un subproceso puede solicitar un bloqueo de escritura, que es exclusivo, y no se concede hasta que se liberen los bloqueos de lectura y escritura existentes actualmente.

  • Subprocesamiento

    • ThreadPool Durante la escritura de código administrado, es aconsejable que, siempre que sea posible, los desarrolladores utilicen el método QueueUserWorkItem para implementar las llamadas al método asincrónico. Este ejemplo utiliza este enfoque para ejecutar código que compite por un recurso lógico.
  • Delegados

    • WaitCallback Se emplea para crear un método de devolución de llamada con seguridad de tipos para la clase ThreadPool utilizada.

Vea también

Conceptos

Subprocesos y subprocesamiento

Referencia

AutoResetEvent

Delegate

Interlocked

Mutex

System.Threading

ThreadPool

WaitCallback

WaitHandle

Otros recursos

Objetos y características de subprocesos