Processes et Workers
Le multitâche dans 4D est la capacité d'exécuter plusieurs opérations simultanément. Ces opérations sont appelées process. Les process multiples sont comme plusieurs utilisateurs sur le même ordinateur, chacun travaillant à sa propre tâche. Cela signifie essentiellement que chaque méthode peut être exécutée en tant que tâche distincte de la base de données.
Si vous écrivez du code thread-safe, vous pouvez créer des process préemptifs qui pourront tirer parti des ordinateurs multi-cœurs dans vos applications compilées, pour une exécution plus rapide.
L'application 4D crée des process pour ses propres besoins, par exemple le process Main pour gérer l'affichage des fenêtres de l'interface utilisateur, le process Design pour gérer les fenêtres et les éditeurs de l'environnement de Développement (notez que tous deux sont des process workers), le process Web Server, le process Cache Manager, le process Indexing ou le process On Event Manager.
Créer et supprimer des process
Il existe plusieurs façons de créer un nouveau process :
- Exécuter une méthode en mode Développement en sélectionnant la case à cocher Nouveau process dans la boîte de dialogue d'exécution de méthode. La méthode choisie dans ce dialogue est la méthode process.
- Utiliser la commande
New process
. La méthode passée en tant que paramètre à la commandeNew process
est la méthode process. - Utiliser la commande
Execute on server
afin de créer une procédure stockée sur le serveur. La méthode passée en paramètre à la commande est la méthode process. - Utiliser la commande
CALL WORKER
. Si le process du worker n'existe pas déjà, il est créé.
Dans les applications Desktop, des process peuvent être exécutés lors de la sélection de commandes de menu. Dans l'Éditeur de barre de menus, sélectionnez la commande de menu et cliquez sur la case à cocher Démarrer un nouveau process. La méthode associée à la commande de menu est la méthode de process.
Un process peut être effacé dans les conditions suivantes (les deux premières sont automatiques) :
- Lorsque l'exécution de la méthode du process est terminée
- Lorsque l'utilisateur quitte l'application
- Si vous arrêtez le process de manière procédurale ou si vous utilisez le bouton Abort dans le débogueur ou dans l'Explorateur d'exécution
- Si vous appelez la commande
KILL WORKER
(pour supprimer un process worker uniquement).
Un process peut créer un autre process. Les process ne sont pas organisés de manière hiérarchique - tous les process sont égaux, quel que soit le process à partir duquel ils ont été créés. Une fois que le process "parent" a créé un process "enfant", le process enfant se poursuit, que le process parent soit toujours en cours d'exécution ou non.
Éléments d'un process
Chaque process contient des éléments spécifiques qu'il peut traiter indépendamment des autres process.
Éléments de langage
- Variables : Chaque process possède ses propres [variables process] (../Concepts/variables#variables-process). Les variables process ne sont reconnues que dans le cadre de leur process natif.
- Ensembles process : Chaque process a ses propres ensembles process.
LockedSet
est un ensemble process. Les ensembles process sont effacés dès que la méthode process est terminée. - Méthode de gestion des erreurs : Chaque process peut avoir sa propre méthode de gestion des erreurs.
- Fenêtre du débogueur : Chaque process peut avoir sa propre fenêtre de débogage.
Éléments d'interface
Les éléments d'interface sont utilisés dans les [Applications Desktop] (../category/desktop-applications). Il s'agit des éléments suivants :
- Barre de menus : Chaque process peut avoir sa propre barre de menus courante. La barre de menus du process au premier plan est la barre de menus courante de l'application.
- Une ou plusieurs fenêtres : Chaque processus peut avoir plusieurs fenêtres ouvertes simultanément. A l'inverse, des process peuvent n'avoir pas de fenêtre du tout.
- Une fenêtre active (de premier plan) : Bien qu'un process puisse disposer de plusieurs fenêtres ouvertes simultanément, chaque process n'a qu'une fenêtre active. Pour avoir plusieurs fenêtres actives à la fois, vous devez démarrer plusieurs process.
- Formulaires d'entrée et de sortie : Les formulaires d'entrée et de sortie par défaut peuvent être définis de manière procédurale pour chaque table dans chaque process.
- Par défaut, les process ne comportent pas de barre de menus, ce qui signifie que les raccourcis standard du menu Edition (notamment couper / copier / coller) ne sont pas disponibles dans les fenêtres des process. Lorsque vous appelez les dialogues ou les éditeurs de 4D (éditeur de formules, éditeur de recherches...) depuis un process, assurez-vous que l'équivalent d'un menu Edition est installé dans le process si vous souhaitez que l'utilisateur bénéficie des raccourcis clavier de type copier/coller.
- Les process exécutés sur le serveur (procédures stockées) et les process préemptifs ne doivent pas contenir d'