Ejemplo Wait Synchronization Technology
Actualización: noviembre 2007
Este ejemplo muestra cómo utilizar la clase WaitHandle para la sincronización de subprocesos. El tipo derivado de WaitHandle Mutex se utiliza para exigir un acceso mutuamente excluyente a un bloque de código protegido.
Para obtener más información sobre el uso de los ejemplos, consulte los temas siguientes:
Para generar el ejemplo desde el símbolo del sistema
Abra la ventana del símbolo del sistema y navegue hasta el subdirectorio específico de uno de los lenguajes para tener acceso al ejemplo.
Escriba msbuild WaitSynchronizationCS.sln o msbuild WaitSynchronizationVB.sln en la línea de comandos, en función del lenguaje de programación elegido.
Para generar el ejemplo mediante Visual Studio
Abra el Explorador de Windows y navegue hasta el subdirectorio específico de uno de los lenguajes para tener acceso al ejemplo.
Haga doble clic en el icono de WaitSynchronizationCS.sln o WaitSynchronizationVB.sln, dependiendo del lenguaje de programación elegido, para abrir el archivo en Visual Studio.
En el menú Generar, haga clic en Generar solución.
Para ejecutar el ejemplo
Navegue hasta el directorio que contiene el nuevo archivo ejecutable.
Escriba Mutex.exe en la línea de comandos.
Nota: Este ejemplo genera una aplicación de consola. Para poder ver el resultado, debe iniciarla desde una ventana de la consola.
Comentarios
Este ejemplo pone en la cola cinco llamadas al método asincrónico. Cada método espera para poseer el recurso, escribe en la consola, espera y, a continuación, escribe en la consola una segunda vez.
Las viñetas siguientes describen brevemente las clases y las tecnologías que se utilizan en este ejemplo:
Sincronización de subprocesos
Mutex Proporciona la exclusión mutua para la sincronización de subprocesos.
AutoResetEvent El subproceso principal del ejemplo espera hasta que se establezca un objeto AutoResetEvent. Esto indica que la última de las funciones asincrónicas ha terminado de hacer su trabajo.
WaitHandle La clase WaitHandle es la clase base de la cual derivan las clases Mutex y AutoResetEvent (entre otras). Este tipo implementa métodos para "esperar" a que los distintos tipos derivados queden "marcados".
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. 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.
Para obtener más información sobre los subprocesos y la sincronización, lea los comentarios de los archivos del código fuente y de build.proj.
Vea también
Conceptos
Subprocesos y subprocesamiento