Objetos de evento (sincronización)

Un objeto de evento es un objeto de sincronización cuyo estado se puede establecer explícitamente en señalizado mediante el uso de la función SetEvent . A continuación se muestran los dos tipos de objeto de evento.

Object Descripción
Evento de restablecimiento manual Objeto de evento cuyo estado permanece señalado hasta que se restablece explícitamente a no asignado por la función ResetEvent . Mientras se señala, se puede liberar cualquier número de subprocesos en espera o subprocesos que especifiquen posteriormente el mismo objeto de evento en una de las funciones de espera.
Evento de restablecimiento automático Objeto de evento cuyo estado permanece señalado hasta que se libera un único subproceso en espera, en cuyo momento el sistema establece automáticamente el estado en no asignado. Si no hay subprocesos en espera, el objeto del evento sigue teniendo el estado señalizado. Si hay más de un subproceso en espera, se selecciona un subproceso en espera. No asuma un orden primero en salir (FIFO). Los eventos externos, como las API en modo kernel, pueden cambiar el orden de espera.

 

El objeto de evento es útil para enviar una señal a un subproceso que indica que se ha producido un evento determinado. Por ejemplo, en la entrada y salida superpuestas, el sistema establece un objeto de evento especificado en el estado señalado cuando se ha completado la operación superpuesta. Un único subproceso puede especificar objetos de evento diferentes en varias operaciones superpuestas simultáneas y, a continuación, usar una de las funciones de espera de varios objetos para esperar a que se indique el estado de cualquiera de los objetos de evento.

Un subproceso usa la función CreateEvent o CreateEventEx para crear un objeto de evento. El subproceso de creación especifica el estado inicial del objeto y si es un objeto de evento de restablecimiento manual o de restablecimiento automático. El subproceso de creación también puede especificar un nombre para el objeto de evento. Los subprocesos de otros procesos pueden abrir un identificador para un objeto de evento existente especificando su nombre en una llamada a la función OpenEvent . Para obtener información adicional sobre los nombres de objetos mutex, event, semaphore y timer, vea Interprocess Synchronization.

Usar objetos de evento