Probleme de comprehension Thread

chtiyoyo Messages postés 2 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 22 mai 2008 - 21 mai 2008 à 11:11
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 24 mai 2008 à 22:44
Bonjour,avant tout je tiens a m'excuser pour tous les accents oublie mais je suis sur un qwerty alors pas facile. Apres pas mal de recherche a travers la toile je n'est pas reussi a resoudre la question qui m'agace depuis des heures.

J'ai cree un programme controlant par GPIB 5 machines differentes, dans le but d'une manipulation scientifique. Le programme fonctionne bien, mon probleme est que ce genre de manipulation dure 24H, donc c'est une application tres longue. Sur mon programme, j'ai installer 2 Tabsheet basique, l'un proposant tous les objets du programme, l'autre est compose de 5 graphes qui se modifient a chaque nouvelle acquisition.
Mon probleme est que une fois le programme lance, si je veux aller d'un tabsheet a l'autre, c'est tres long, malgre un nombre incalculable de processmessage incorpore dans le programme (pas forcement bon d'ailleurs mais c'etait ma premiere idee pour resoudre le probbleme). J'ai donc fait des recherches et je suis tombe sur les threads qui je pense correspondent parfaitement a mon probleme. Cependant il y a une chose que je comprend pas.il faut d'apres ce que j'ai compris incorpore mon code dans le thread, en faisant cela, mon thread aura forcement besoin de ma form dans ces uses ( nombreux memo et graphes ) et inversement ma form aura besoin du thread, donc il y aura un probleme d'unite circulaire. Il y a sans doute une ou plusieurs choses que je n'ai pas comprise alors si vous pouviez m'eclairer. En esperant quej'ai ete le plus clair possible. Merci d'avance.

2 réponses

chtiyoyo Messages postés 2 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 22 mai 2008
22 mai 2008 à 11:42
Pas de reponse?

Pour faire beaucoup plus clair, est-il possible d'inserer dans un thread une procedure se trouvant dans ma form. Cette procedure est tres longue et j'aimerais qu'elle ne bloque plus mon interface quand elle est executee. Voila merci d'avance.
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
24 mai 2008 à 22:44
Salut,

Il n'est pas facile de te répondre. Mais je me lance pour ne pas te laisser dans les ????    :)

Au premier abord :  oui, il est possible d'utiliser une procédure du Thread principal dans un Thread secondaire.
Mais  comme tu dis que cette procédure est très longue et qu'elle se déroulera donc dans le Thread principal (par définition), on peut se demander où se trouve l'intérêt d'une application multi-thread dans ce cas.
Il vaudrait mieux, je pense, transférer le traitement de cette longue procédure dans ton Thread secondaire. A cette condition, ton interface ne sera plus bloquée.  Mais il te faudra faire attention aux rafraîchissements des memos et graphes par des "synchronize" qui, eux, se déroulent toujours dans le Thread principal...

En fait, tout dépend des variables que tu veux afficher dans ton interface et qui sont utilisées par tes Threads... Sont-elles inter-dépendantes? Peut-il y avoir des accès concurrentiels?

Dans le cas d'une application multi-threadée, il te faut penser à une application multi-process... Le noeud du problème est toujours dans le partage des variables, et qui peuvent être modifiées à tout moment, ne dépendant que du bon-vouloir du système. Et les sécurités qu'on met en oeuvre ne font que ralentir le bidule. Mais il me semble que dans ton cas, le multi-Threading est conseillé. Et d'autant plus si tu disposes d'un PC MultiCore.
0
Rejoignez-nous