AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de gestión de procesos / Hilos, semáforos, señales y mutex
  • Presentación
  • Gestión simple de eventos
  • Principio
  • Ejemplo: Aplicación con corrector ortográfico
  • Funciones WLanguage
  • Observación
  • Gestión avanzada de eventos
  • Principio
  • Implementación
  • Funciones para la gestión avanzada de eventos
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Los eventos permiten sincronizar los diferentes subprocesos de una aplicación. Por lo tanto, un subproceso puede esperar a que se ejecute otro subproceso.
WLanguage propone dos modos para gestionar eventos:
Gestión simple de eventos

Principio

Dos subprocesos se ejecutan en paralelo (un subproceso principal y uno secundario, por ejemplo). Uno de los subprocesos espera una acción específica del segundo subproceso para poder ejecutarse.

Ejemplo: Aplicación con corrector ortográfico

Cuando un usuario pulsa la BARRA ESPACIADORA en un control Campo de entrada, el corrector ortográfico se activa automáticamente para revisar la palabra anterior.
En este caso, la revisión ortográfica se gestiona en un subproceso secundario.
Cada vez que se pulsa la BARRA ESPACIADORA, el subproceso principal envía una señal al subproceso secundario para iniciar el corrector ortográfico.
El código para este tipo de aplicación es el siguiente:
  • Código del subproceso principal:
    IF Right(EDT_Edit1, 1) = " " THEN
    ThreadSendSignal("ThreadSpellCheck")
    END
  • Código del subproceso secundario (ThreadSpellCheck):
    LOOP
    IF ThreadWaitSignal() = True THEN
     StartSpellCheck()
    END
    END

Funciones WLanguage

Las siguientes funciones permiten gestionar eventos de forma simple:
ThreadSendSignalEl subproceso actual envía una señal al subproceso que está en espera para desbloquearlo.
ThreadWaitSignalBloquea el hilo actual hasta que reciba una señal de otro hilo.

Observación

Los semáforos y los eventos son objetos del sistema identificados por un nombre. Se pueden compartir entre todas las aplicaciones que se ejecutan en un equipo.
Por lo tanto, dos aplicaciones (o dos instancias de la misma aplicación) utilizan los mismos objetos si utilizan el mismo nombre.
Para crear nombres únicos, utilice la función Instance para definir el nombre deseado.
Gestión avanzada de eventos

Principio

La gestión avanzada de eventos se utiliza cuando se establece una comunicación entre varios subprocesos (más de 2). Algunos subprocesos esperan a que el subproceso principal realice una tarea. Cuando el subproceso principal realiza esta tarea, envía una señal a todos los subprocesos secundarios.

Implementación

Existen dos métodos para implementar una gestión avanzada de eventos:
  • Utilizar las variables AutomaticEvent y ManualEvent.
  • Utilizar eventos con nombre (método recomendado en la gestión de opciones para compartir eventos).
Método 2: Utilizar eventos con nombre (método recomendado en la gestión de opciones para compartir eventos)
Las siguientes etapas permiten implementar la gestión avanzada de eventos:
  1. Crear un evento (función EventCreate). Este evento está cerrado de forma predeterminada.
  2. Esperar un evento (función EventWait).
  3. Sincronizar subprocesos:
    • con la función EventChange: el evento se abre. Todos los subprocesos en espera se desbloquean y el evento se vuelve a cerrar automáticamente (operación predeterminada).
  4. Destruir el evento (con la función EventDestroy).

Funciones para la gestión avanzada de eventos

Las siguientes funciones WLanguage permiten gestionar eventos de forma avanzada:
EventChangeModifica el estado de un evento.
eventCloseCierra una sincronización Event entre varios hilos.
EventCreateCrea un evento.
EventDestroyDestruye explícitamente un Event.
eventOpenAbre una sincronización Event entre varios hilos.
EventWaitBloquea el hilo actual mientras espera a que se abra el Event especificado.
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 04/07/2023

Señalar un error o enviar una sugerencia | Ayuda local