Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20.6
New signal

New signal 


 

New signal {( descripcion )} -> Resultado 
Parámetro Tipo   Descripción
descripcion  Texto in Descripción para la señal
Resultado  Objeto in Objeto nativo encapsulando la señal

El comando New signal crea un objeto señal.

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

  • el worker/proceso llamado puede actualizar el objeto señal después de que se complete un procesamiento específico
  • el worker/proceso llamante puede detener su ejecución y esperar hasta que la señal se actualice, sin consumir ningún recurso de CPU.

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

Como el objeto señal es un objeto compartido (ver Objetos y colecciones compartidos), también se puede utilizar para mantener las propiedades del usuario, incluida la propiedad [#title id="9602"/], llamando la estructura Use...End use.

Valor devuelto

El objeto señal devuelto contiene las siguientes propiedades y métodos:

PropiedadTipoDescripción
signal.signaledBooleano(propiedad de solo lectura) false en la creación de la señal. Se convierte en true cuando se llama al método signal.trigger( ).
signal.descriptionTextoDescripción personalizada de la señal, si la hay

MétodoDescripción
signal.wait( )Espera por la señal (proceso/worker llamante)
signal.trigger( )Disparar la señal (proceso/worker llamado)

Ejemplo  

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

 C_OBJECT($signal)
 $signal:=New signal("Esta es mi primera señal")
 CALL WORKER("myworker";"doSomething";$signal)
 $signaled:=$signal.wait(1) //espera un máximo de 1 segundo
 If($signaled)
    ALERT("myworker finished the work. Result: "+$signal.myresult)
 Else
    ALERT("myworker has not finished in less than 1s")
 End if

El método "doSomething" podría ser como:

 C_OBJECT($1)
  //todo procesamiento
  //...
 Use($1)
    $1.myresult:=$processingResult  //devuelve el resultado
 End use
 $1.trigger() // El trabajo está terminado



Ver también 

signal.wait( )
signal.description
signal.signaled
signal.trigger( )

 
PROPIEDADES 

Producto: 4D
Tema: Procesos (Comunicación)
Número 1641

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v17 R4

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v20)
Manual de lenguaje 4D ( 4D v20.1)
Manual de lenguaje 4D ( 4D v20.2)
Manual de lenguaje 4D ( 4D v20.3)
Manual de lenguaje 4D ( 4D v20.4)
Manual de lenguaje 4D ( 4D v20.5)
Manual de lenguaje 4D ( 4D v20.6)