PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → TACHES PARALLELES et requete
TACHES PARALLELES et requete
Débuté par julie, 12 sep. 2018 16:27 - 8 réponses
Posté le 12 septembre 2018 - 16:27
J'essaye d’améliorer un traitement en utilisant les taches parallèles.
Dans la fonction que je veux paralléliser, j'exécute une requête.
Est-ce que cela pose problème.
Ca ne fonctionne pas
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 13 septembre 2018 - 15:24
Bonjour,

Qu'est-ce qui ne fonctionne pas ?

--
Cordialement,

Philippe SAINT-BERTIN
Posté le 14 septembre 2018 - 09:06
En fait la tache parallèle en elle même fonctionne très bien si dans ma fonction, je met un truc genre trace.

Par contre lorsque j’exécute ma requête dans la tache parallèle, ça ne marche pas plus de quelques fois.
Comme si ça bloquais.
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 14 septembre 2018 - 10:08
Ces sont des requêtes de sélection, de MAJ, d'insertion ?

--
Cordialement,

Philippe SAINT-BERTIN
Posté le 14 septembre 2018 - 10:20
juste des requête select et ensuite en fonction du résultat je fais un traitement
Posté le 18 septembre 2018 - 14:51
bonjour,

peut etre qu'en mettant ton code ici on pourra y voir plus clair.

tu parles bien de taches parallèles (avec les instructions TâcheParallèleExécute etc) et non pas de thread secondaires ?

sinon peut etre qu'en développant un peu plus ta problématique certains pourront t'orienter sur une autre methode.

cordialement
Membre enregistré
287 messages
Popularité : +51 (79 votes)
Posté le 17 mai 2023 - 11:03
Up
lorsque j'appelle tacheparallèleattend mon appli 'attend a l'infini. Uniquement si dans ma tache parallèle je lance une requête que je parcours (dans le but de remplir un tableau)

--
#DKR
Membre enregistré
227 messages
Popularité : +18 (20 votes)
Posté le 19 mai 2023 - 16:38
Bonjour,

Même réponse : il nous faudrait le code pour t'aider au mieux ^^

J'ai parfois ce problème qui m'arrive, la première chose a faire est de vérifier :
1 - Le type du tableau ( certain sont global donc c'est la même instance pour toutes tes taches)
2 - Vérifier les accès concurrentiels possible entre les taches parallèles et le thread principal.
3 - limiter le nombre de tache parallèle lancé en même temps et surtout vérifier qu'elles passe toutes en état terminée (tu peux le voir en débug dans ton tableau de taches parallèles)

J'utilise dans mon cas plus souvent TâcheParallèleExécuteAprès plutôt que tacheparallèleattend pour pas bloquer infiniment le user.


Cordialement
Membre enregistré
287 messages
Popularité : +51 (79 votes)
Posté le 19 mai 2023 - 17:42
En testant j'ai l'état j'ai vu que la tâche resté en état exécution en cours, il attend à l'infini

Tu veux dire quoi par le type du tableau ?

je te donne le scénario :
Dans le code du projet, j'appelle une méthode de classe que j'exécute avec TacheParallèlleExecute (je récupère la variable tacheparallèle dans un tableau global dans la classe)
Dans cette méthode j'exécute une requête et pour chaque ligne de la requête j'exécute une autre tâche parallèlle (qui va remplir un tableau global dans une classe), et je récupère la variable tacheparallèle dans un tableau global dans la classe

Du coup dans ma fenêtre interne je fais "tacheparallèleattendToutes(LeTableauGlobal)

Et la il attend à l'infini

--
#DKR