Saltar al contenido principal
Versión: Siguiente

New signal

New signal { ( description : Text ) } : 4D.Signal

ParámetrosTipoDescripción
descriptionTextDescripción para la señal
Resultado4D.SignalObjeto nativo que encapsula la señal
Historia
LanzamientoModificaciones
17 R4Añadidos

Descripción

El comando New signal crea un objeto 4D.Signal.

Una señal es un objeto compartido que puede ser pasado como parámetro de un worker o proceso a otro worker o proceso, de manera que:

  • el worker/proceso llamado puede actualizar el objeto de la señal después de que se haya completado el procesamiento específico
  • el worker/proceso que llama puede detener su ejecución y esperar hasta que se actualice la señal, sin consumir recursos de la CPU.

Opcionalmente, en el parámetro description puede pasar un texto personalizado que describa la señal. Este texto también puede definirse después de la creación de la señal.

Dado que el objeto signal es un objeto compartido, también puede utilizarse para mantener propiedades de usuario, incluida la propiedad .description, llamando a la estructura Use...End use.

Valor devuelto

Un nuevo objeto 4D.Signal.

Ejemplo

Este es un ejemplo típico de un worker que fija una señal:

 var $signal : 4D.Signal
$signal:=New signal("Esta es mi primer signal")

CALL WORKER("myworker"; "doSomething";$signal)
$signaled:=$signal.wait(1) //espera 1 segundo máximo

If($signaled)
ALERT("myworker ha terminado el trabajo. Resultado: "+$signal.myresult)
Else
ALERT("myworker no ha terminado en menos de 1s")
End if

El método doSomething puede ser como:

 #DECLARE ($signal : 4D.Signal)
//cualquier procesamiento
//...
Use($signal)
$signal.myresult:=$processingResult //devuelve el resultado
End use
$signal.trigger() // El trabajo ha terminado