|
|
|
|
|
TâcheParallèleExécute (Fonction) En anglais : ParallelTaskExecute Déclenche l'exécution d'une tâche parallèle.
t1 est une TâcheParallèle = TâcheParallèleExécute(ProcédureA, (), tpoThreadPrincipal)
t1 est une TâcheParallèle
t1.Procédure = Procédure3
t2 est une TâcheParallèle = TâcheParallèleExécute(t1)
t3 est une Description de TâcheParallèle
t3.Procédure = Procédure3
TâcheParallèleExécute(t3)
t3bis est une Description de TâcheParallèle
t3bis.Procédure = Procédure3bis
t3bis.Paramètre[1] = DateDuJour()
t3bis.Paramètre[2] = HeureSys()
TâcheParallèleExécute(t3bis)
MaDescriptionTâche est une Description de TâcheParallèle
tabMesTâches est un tableau de TâcheParallèle
MaDescriptionTâche.Procédure = Exemple2_Etape1
Ajoute(tabMesTâches, TâcheParallèleExécute(MaDescriptionTâche))
MaDescriptionTâche.Procédure = Exemple2_Etape2
Ajoute(tabMesTâches, TâcheParallèleExécute(MaDescriptionTâche))
TâcheParallèleExécuteAprèsToutes(tabMesTâches, Exemple2_Fin, (), tpoThreadPrincipal)
Syntaxe
Exécuter une tâche parallèle Masquer les détails
<Résultat> = TâcheParallèleExécute(<Procédure> [, <Paramètres> [, <Options>]])
<Résultat> : Variable de type TâcheParallèle Variable de type TâcheParallèle correspondant à la tâche à exécuter. <Procédure> : Chaîne de caractères ou variable de type Procédure Procédure à exécuter. Ce paramètre peut correspondre : - au nom de la procédure à exécuter.
- au nom de la variable de type Procédure correspondant à la procédure à exécuter.
<Paramètres> : Liste de valeurs entre parenthèses et séparées par des virgules Paramètres de la procédure à exécuter. Cette liste de paramètres est de la forme :
(<Paramètre 1>, ..., <Paramètre N>) où : - <Paramètre 1> : Premier paramètre de la procédure.
- ...
- <Paramètre N> : Nième paramètre de la procédure.
Attention : Les paramètres sont passés par valeur. Dans le cas de variables de types complexes (tableaux, objet), la valeur est l'élément lui-même. Pour protéger l'accès à cette variable, il est possible d'utiliser une des solutions suivantes : - faire une copie de la variable (avec le mot clé LOCAL),
- utiliser des sections critiques (avec la fonction WLangage SectionCritiqueDebut ou l'attribut <section critique>)
<Options> : Constante ou combinaison de constantes optionnelle de type Entier Options de la tâche à exécuter : | | tpoCopieComplèteContexteHFSQL | Provoque la copie immédiate du contexte HFSQL courant. Conseillé par exemple si la tâche parallèle doit tenir compte des positions en cours dans les fichiers et requêtes du contexte de l'appelant. | tpoCopieDifféréeContexteHFSQL (Valeur par défaut) | Provoque une copie légère du contexte HFSQL lors du premier accès aux données HFSQL. | tpoCopieLégèreContexteHFSQL | Provoque la copie immédiate d'une partie du contexte HFSQL courant. Seuls les répertoires où se trouvent les fichiers de données en HFSQL Classic et/ou les connexions en HFSQL Client/Serveur sont mémorisés. | tpoThreadPrincipal | Exécute la tâche dans le thread principal. Cette constante peut être combinée avec une des autres constantes.
Attention : Cette constante ne peut pas être utilisée pour exécuter une tâche parallèle dans le thread principal depuis le thread principal. |
Remarque : Pour savoir quel type de copie choisir, consultez le comparatif des différents modes de copie.
Exécuter une tâche parallèle déjà décrite (variable de type TâcheParallèle) Masquer les détails
<Résultat> = TâcheParallèleExécute(<Tâche>)
<Résultat> : Variable de type TâcheParallèle Variable de type TâcheParallèle correspondant à la tâche exécutée. <Tâche> : Variable de type TâcheParallèle Nom de la variable de type TâcheParallèle correspondant à la tâche à exécuter. Attention : Si la tâche est déjà en cours d'exécution ou a déjà été exécutée, une erreur WLangage sera provoquée.
Exécuter une tâche parallèle connue par sa description (variable de type Description de TâcheParallèle) Masquer les détails
<Résultat> = TâcheParallèleExécute(<Description tâche>)
<Résultat> : Variable de type TâcheParallèle Variable de type TâcheParallèle correspondant à la tâche exécutée. <Description tâche> : Variable de type Description de TâcheParallèle Nom de la variable de type Description de TâcheParallèle décrivant la tâche à exécuter. Remarques - La tâche est enregistrée dans la file d'attente des tâches à exécuter.
- La fonction TâcheParallèleExécute n'est pas bloquante et n'attend pas la fin de la tâche.
- Comparatif des différents types de copie du contexte HFSQL :
| | | Type de copie | Avantages | Inconvénients |
---|
Copie complète | Copie : - les paramètres de connexion au sens large (connexions, chemins physiques, ...).
- les positions, les filtres, ... définis sur les fichiers de données.
- les requêtes.
| Consommation mémoire (sur le client et sur le serveur). | Copie légère | Copie les paramètres de connexion au sens large (connexions, chemins physiques, ...). Pas de consommation mémoire sur le poste Serveur. | Les enregistrements et les filtres en cours ne sont pas copiés. Il est donc nécessaire de repositionner les enregistrements par la fonction HLitRecherche par exemple. Pas de copie des requêtes. Consommation mémoire sur le poste Client | Copie différée | Pas de consommation mémoire (sur le client et sur le serveur). | Risque : Si les paramètres de connexion au sens large sont modifiés, la dernière modification sera prise en compte. Les enregistrements et les filtres en cours ne sont pas copiés. Il est donc nécessaire de repositionner les enregistrements par la fonction HLitRecherche par exemple. Pas de copie des requêtes. |
En règle générale, la copie différée est conseillée à condition de ne pas changer les paramètres de connexion et de refaire les HLitRecherche nécessaires.
Liste des exemples associés :
|
Exemples unitaires (WINDEV) : Utilisation des tâches parallèles
[ + ] Les tâches parallèles permettent notamment d’accélérer les temps de traitement et d'améliorer la réactivité d’une application. Cet exemple présente les fonctions et types de variables nécessaires à l'utilisation des tâches parallèles : - exécution de tâches parallèles, - interaction avec les champs, - tâches de continuation.
|
|
Exemples didactiques (WINDEV) : WD ThreadUI
[ + ] L'utilisation de threads ou de tâches parallèles est très souvent obligatoire afin de répondre au besoin de rapidité des utilisateurs. Avec le WLangage de WINDEV, le lancement de traitements en tâche de fond est simplifié à l'extrême avec : - les fonctions de gestion des threads, - le type Thread, - les tâches parallèles. Mais attention, s'il est facile de lancer un traitement en arrière plan, il faut néanmoins être précautionneux sur l'UI de l'application : seuls les traitements exécutés dans le thread principal sont autorisés à mettre à jour l'interface (affecter un champ, remplir une liste, combo, table, zone répétée...). Cet exemple vous montre 4 façons de mettre à jour l'UI de vos applications avec des données provenant de threads secondaires.
|
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|