Función PulseEvent (winbase.h)

Establece el objeto de evento especificado en el estado señalado y, a continuación, lo restablece al estado no asignado después de liberar el número adecuado de subprocesos en espera.

Nota Esta función no es confiable y no debe usarse. Existe principalmente por compatibilidad con versiones anteriores. Para obtener más información, vea la sección Comentarios.
 

Sintaxis

BOOL PulseEvent(
  [in] HANDLE hEvent
);

Parámetros

[in] hEvent

Identificador del objeto de evento. La función CreateEvent o OpenEvent devuelve este identificador.

El identificador debe tener el derecho de acceso EVENT_MODIFY_STATE. Para obtener más información, vea Seguridad de objetos de sincronización y derechos de acceso.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Un subproceso que espera en un objeto de sincronización se puede quitar momentáneamente del estado de espera mediante un APC en modo kernel y, a continuación, volver al estado de espera una vez completado el APC. Si la llamada a PulseEvent se produce durante el tiempo en que se ha quitado el subproceso del estado de espera, el subproceso no se liberará porque PulseEvent libera solo los subprocesos que están esperando en el momento en que se llama. Por lo tanto, PulseEvent no es confiable y no debe ser utilizado por las nuevas aplicaciones. En su lugar, use variables de condición.

Para un objeto de evento de restablecimiento manual, se liberan inmediatamente todos los subprocesos en espera que se puedan liberar. A continuación, la función restablece el estado del objeto de evento en sin signo y devuelve.

Para un objeto de evento de restablecimiento automático, la función restablece el estado en no asignado y vuelve después de liberar un único subproceso en espera, incluso si hay varios subprocesos en espera.

Si no hay subprocesos en espera o si no se puede liberar ningún subproceso inmediatamente, PulseEvent simplemente establece el estado del objeto de evento en no asignado y devuelve.

Tenga en cuenta que, para que un subproceso use las funciones de espera de varios objetos para esperar a que se señalen todos los objetos especificados, PulseEvent puede establecer el estado del objeto de evento en señalizado y restablecerlo en no asignado sin hacer que la función de espera se devuelva. Esto sucede si no todos los objetos especificados se indican simultáneamente.

Tenga extrema precaución al usar SignalObjectAndWait y PulseEvent con Windows 7, ya que el uso de estas API entre varios subprocesos puede hacer que una aplicación interbloquee. Los subprocesos señalados por SignalObjectAndWait llaman a PulseEvent para indicar el objeto en espera de la llamada SignalObjectAndWait . En algunas circunstancias, el autor de la llamada de SignalObjectAndWait no puede recibir el estado de señal del objeto en espera en tiempo, lo que provoca un interbloqueo.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

CreateEvent

Objetos de evento

OpenEvent

ResetEvent

SetEvent

Funciones de sincronización