Aller au contenu principal
Version: 20 R7 BETA

New signal

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

ParamètresTypeDescription
DescriptionTextDescription du signal
Résultat4D.SignalObject encapsulant le signal
Historique
ReleaseModifications
17 R4Ajout

Description

La commande New signal crée un objet 4D.Signal.

Un signal est un objet partagé qui peut être passé en paramètre depuis un worker ou un process à un autre worker ou process, de manière à ce que :

  • le worker/process appelé puisse mettre à jour l'objet signal après qu'un traitement spécifique soit terminé
  • le worker/process appelant puisse stopper son exécution et attende jusqu'à ce que le signal soit mis à jour, sans consommer aucune ressource CPU.

Optionnellement, dans le paramètre description, vous pouvez passer un texte personnalisé décrivant le signal. Ce texte peut également être défini après la création du signal.

Comme l'objet signal est un objet partagé, il peut aussi être utilisé pour maintenir des propriétés utilisateur, y compris la propriété .description, via l'appel de la structure Use...End use.

Valeur retournée

Un nouvel objet 4D.Signal.

Exemple

Voici un exemple type de worker qui définit un signal :

 var $signal : 4D.Signal
$signal:=New signal("Ceci est mon premier signal")

CALL WORKER("myworker";"doSomething";$signal)
$signaled:=$signal.wait(1) //patienter 1 seconde au maximum

If($signaled)
ALERT("myworker a terminé le travail. Résultat : "+$signal.myresult)
Else
ALERT("myworker n'a pas terminé en moins d'1 seconde")
End if

La méthode doSomething est par exemple :

 #DECLARE ($signal : 4D.Signal)
//tout traitement
//...
Use($signal)
$signal.myresult:=$processingResult //renvoi du résultat
End use
$signal.trigger() // Le travail est terminé