4D v15 R5 introduit un nouveau moyen, simple et puissant, d’échanger des informations entre processus et également entre processus et formulaires. Cette fonctionnalité est basée sur un système de messagerie asynchrone qui permet d’appeler les processus et les formulaires et de leur demander d’exécuter des méthodes avec des paramètres dans leur propre contexte.
Le processus Worker
Un worker a une boîte de messages. Le processus worker est créé à la première utilisation et son processus associé est également lancé automatiquement à la première utilisation. Contrairement à la commande « New process« , un processus worker reste en vie après la fin de l’exécution de la méthode.
Un worker peut s’appeler lui-même afin de travailler sur des tâches importantes par morceaux. Les workers réduisent considérablement le besoin de variables inter-processus ainsi que le besoin de sémaphores pour permettre un traitement asynchrone parallèle. Un worker est nécessaire pour le multithreading préemptif. Cependant, un worker peut être utilisé avec des processus coopératifs, il est donc également utile avec des environnements 32 bits ou interprétés.
Deux nouvelles commandes sont disponibles :
- « CALL WORKER » encapsule le nom de la méthode du projet et les éventuels paramètres dans un message et l’affiche dans la boîte de messages du travailleur.
CALL WORKER (nom du processus|numéro du processus;nom de la méthode du projet;param1 ;…;paramN)
- « KILL WORKER » » envoie un message au travailleur spécifié lui demandant d’oublier tout message en attente et de se tuer.
KILL WORKER (rien|nom du processus|numéro du processus)
Une base de données d’exemple est disponible pour démontrer la nouvelle fonctionnalité :
Formulaire d’appel
Maintenant, chaque formulaire exécuté dans une fenêtre possède une boîte de message. « CALL FORM » permet d’exécuter une méthode de projet avec des arguments dans le contexte d’un formulaire affiché dans une fenêtre, quel que soit le processus propriétaire de la fenêtre.
La commande permet d’utiliser « CALL PROCESS » avec des variables inter-processus pour passer des messages. « CALL FORMLa commande » » peut être utilisée à l’intérieur d’un contexte de formulaire pour s’appeler elle-même afin d’empiler ou d’empiler le travail. Ceci élimine le besoin de solutions de contournement telles que SET TIMER(1). Bien qu’extrêmement nécessaire pour les processus préemptifs, il fonctionne également avec les processus coopératifs, avec les environnements 32 bits ou interprétés.
La syntaxe est la suivante :
CALL FORM (référence de fenêtre;nom de méthode de projet;param1 ;…;paramN)
De la même manière que « CALL WORKER« , « CALL FORM » encapsule le nom de la méthode et les arguments de la commande dans un message qui est affiché dans la boîte de message du formulaire. Le formulaire exécute ensuite le message dans son propre processus.
Un exemple de base de données est disponible pour démontrer la nouvelle fonctionnalité :
Pour plus de détails, veuillez consulter le manuel de mise à niveau de 4D v15 R5.