|
|
|
|
- Espera infinita
- Sincronizar hilos
- Varios
ThreadWaitSignal (Función) Bloquea el hilo actual hasta que reciba una señal de otro hilo. Esta función simplifica la sincronización entre hilos sin tener que implementar una gestión avanzada de eventos. Observación: Esta función equivale a la función EventWait utilizada con un evento automático, cuando la función ThreadSendSignal envía una señal. Por lo tanto, el evento se cierra de forma automática. Recordatorio: - Un hilo es un proceso que se ejecuta en paralelo con la aplicación actual (hilo principal). Esto le permite iniciar una tarea en segundo plano (hacer una copia de seguridad, etc.).
- Las funciones ThreadWaitSignal y ThreadSendSignal permiten sincronizar los hilos de dos en dos.
// Create an event EventCreate("Let's go", eventManual, eventClose) // Run a first thread ThreadExecute("Thread1", threadNormal, "Thread_First") // Locks the current thread until the event is obtained ThreadWaitSignal() // Run a second thread ThreadExecute("Thread2", threadNormal, "Thread_Second") // Locks the current thread until the event is obtained ThreadWaitSignal() // Modifies the event to run the threads EventChange("Let's go", eventOpen)
//---------------------------------------------- PROCEDURE Thread_First() Trace(dbgInfo(dbgProcess) + " - ThreadSendSignal(threadMain)") ThreadSendSignal(threadMain) EventWait("Let's go") Trace(dbgInfo(dbgProcess) + " - Event received")
//-------------------------------------------- PROCEDURE Thread_Second() Trace(dbgInfo(dbgProcess) + " - ThreadSendSignal(threadMain)") ThreadSendSignal(threadMain) EventWait("Let's go") Trace(dbgInfo(dbgProcess) + " - Event received")
Sintaxis
<Result> = ThreadWaitSignal([<Maximum timeout>])
<Result>: Booleano - True si el hilo actual recibió una señal,
- False si el hilo no recibió ninguna señal (se agotó el tiempo de espera).
<Maximum timeout>: Entero, duración o constante opcional Tiempo máximo de espera en centésimas de segundo. - Si al final del tiempo especificado, el hilo no ha recibido una señal, el valor de <Resultado> es False.
- Si no se especifica este parámetro o corresponde a la constante Infinite, la espera es infinita.
Este parámetro puede corresponder a: - un número entero que corresponde al número de centésimas de segundo,
- una variable de tipo Duration,
- la duración en un formato legible (por ejemplo, 1 s o 10 ms).
Observaciones La ejecución de un hilo se puede detener, incluso si está bloqueado en una espera infinita de un evento. Simplemente utilice ThreadStop. Las funciones ThreadWaitSignal y ThreadSendSignal permiten sincronizar los hilos de dos en dos. Para sincronizar varios hilos en el mismo evento, se deben utilizar las funciones de gestión de eventos: Observación: En los mecanismos internos de gestión de colas y pilas, no es necesario sincronizar los hilos (funciones Enqueue y Dequeue para las colas, funciones Push y Pop para las pilas). ThreadWaitSignal se puede utilizar en un proceso relacionado a un control (código de clic de un botón, por ejemplo): en este caso, se utiliza en el hilo principal.
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|