AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de gestión de procesos / Hilos, semáforos, señales y mutex
  • Endless wait
  • Synchronizing threads
  • Miscellaneous
WINDEV
WindowsLinuxJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac Catalyst
Otros
Procedimientos almacenados
Locks the current thread until it receives a signal from another thread. This function simplifies the synchronization between threads without having to implement an advanced management of events.
Remarks:
  • This function is equivalent to EventWait with an automatic event for a signal sent by ThreadSendSignal. Therefore, the event is automatically closed.
  • Blocking stops immediately (without waiting for the maximum duration) if a request to stop the thread is made by another thread using the ThreadRequestStop function.
Reminders:
  • A thread is a process run in parallel with the current application (main thread). This allows you to run a task in the background (e.g. backup, etc.).
  • ThreadWaitSignal and ThreadSendSignal are used to synchronize the threads two by two.
// 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>: Boolean
  • True if the current thread received a signal,
  • False if the thread receives no signal (the maximum duration is exceeded).
<Maximum timeout>: Optional integer, optional duration or optional constant
Maximum timeout in hundredths of a second.
  • If no signal was received by the thread before the end of specified duration, <Result> is equal to False.
  • If this parameter is not specified or corresponds to the Infinite constant, the wait is infinite.
This parameter can correspond to:
  • an integer corresponding to the number of hundredths of a second,
  • a Duration variable,
  • the duration in a readable format (e.g., 1 s or 10 ms).
Observaciones

Endless wait

You can end the execution of a thread even if it is locked in an endless wait for an event. Simply use ThreadStop.

Synchronizing threads

ThreadWaitSignal and ThreadSendSignal are used to synchronize the threads two by two. To synchronize several threads on the same event, the event functions must be used:
Note: Internal queue and stack management mechanisms eliminate the need for thread synchronization (functions Enqueue and Dequeue for queues, functions Push and Pop for stacks).

Miscellaneous

The function ThreadWaitSignal function can be used in field-related processing (button click code, for example): it is then used in the main thread.
Componente: wd300vm.dll
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: 27/03/2025

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