Ejemplo Monitor Synchronization Technology

Actualización: noviembre 2007

Este ejemplo muestra cómo utilizar la clase Monitor para la sincronización de subprocesos. Las funciones estáticas del tipo Monitor se utilizan para exigir un acceso mutuamente excluyente a un bloque de código protegido.

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

Para obtener más información sobre el uso de los ejemplos, vea 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 MonitorSynchronizationCS.sln o msbuild MonitorSynchronizationVB.sln, dependiendo del lenguaje de programación elegido, en la línea de comandos.

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 MonitorSynchronizationCS.sln o MonitorSynchronizationVB.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, desde el símbolo del sistema.

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

Nota:

Este ejemplo genera una aplicación de consola. Para poder ver el resultado, debe iniciarla desde la línea de comandos. Al ejecutar el ejemplo, observe cómo los resultados de "Start Writing" y "Stop Writing" de cada sistema de escritura se producen consecutivamente sin que se superpongan los subprocesos con ID diferentes. Ello se debe a que los subprocesos tienen el acceso exclusivo al recurso.

Comentarios

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

  • Sincronización de subprocesos

    • Monitor Proporciona las funciones estáticas necesarias para entrar y salir de un bloque de código protegido. No se pueden crear instancias de una instancia del tipo Monitor. En lugar de ello, deberá pasar a sus métodos estáticos una referencia a cualquier tipo derivado de objeto que desee utilizar como nodo único de sincronización.

      Nota:

      Tanto Visual Basic como C# permiten implementar palabras clave especiales para aprovechar los métodos estáticos del tipo Monitor. C# utiliza la palabra clave lock y Visual Basic la palabra clave SyncLock.

    • AutoResetEvent El subproceso principal del ejemplo espera hasta que se establezca un objeto AutoResetEvent, lo que indica que la última de las funciones asincrónicas ha terminado de hacer su trabajo.

    • Interlocked En el ejemplo se utiliza el método estático Decrement para obtener acceso de forma asincrónica a una variable de contador a fin de indicar cuándo debe establecerse el objeto AutoResetEvent.

  • 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. El ejemplo utiliza este enfoque para ejecutar el 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 que lo utilice ThreadPool.

Vea también

Conceptos

Grupo de subprocesos administrados

Referencia

Clase AutoResetEvent

Clase Delegate

Clase Interlocked

Clase Monitor

Espacio de nombres System.Threading

Clase Thread

Clase ThreadPool

Delegado ThreadStart

Delegado WaitCallback

Otros recursos

Subprocesamiento administrado

Objetos y características de subprocesos