threads, suspend() et resume() (nouveau pb dernier post)

threads, suspend() et resume() (nouveau pb dernier post) - C++ - Programmation

Marsh Posté le 09-04-2003 à 16:39:45    

encore moi avec mes p*** de TThread :D
J'ai un problème, à mon avis je dois avoir foutu un bordel monstre au niveau de l'organisation mais n'ayant trouvé d'exemple nulle part j'ai pas pu faire autrement :  
j'ai donc mon thread d'envoi de données, que je crée et appelle à partir d'une classe X.  
seulement dans ce thread envoi, j'utilise une fonction d'une classe Y. Donc problème, qd j'utilise Suspend() ou Resume() ben forcément c'est pas sur le même objet et pouf ca marche pas :/ acces violation je c pas trop quoi ...
le problème, c'est que je suis obligé de lancer ce thread dans la classe X, pour récupérer 2 pointeurs utiles pour la manip, et bien sur il faut que je recrée un thread envoi dans la classe Y, ne pouvant pas utiliser celui de la classe X.
Qui plus est le thread envoi et un autre thread reception qui doivent fonctionner ensemble, se donnent la priorité l'un à l'autre avec Suspend et Resume ... donc voila c pas la joie ...
 
Donc si vous aviez une idée, ou alors un endroit où trouver des sources histoire d'avoir des exemple d'utilisation, ce serait génial.
 
Ah aussi dernière chose, dans la fonction de la classe X où je lance mon thread, directement après j'ai un while, dans lequel il y a une condition à respecter qui dépend de ce thread. donc en gros, ca quitte la boucle directement et le thread démarre après :D
la aussi des exmples ou idées ce serait cool :)
 
Merci ! :jap:


Message édité par LeMakisar2 le 14-04-2003 à 07:57:37
Reply

Marsh Posté le 09-04-2003 à 16:39:45   

Reply

Marsh Posté le 10-04-2003 à 10:43:28    

Au secours à l'aide !!! je comprends rien je vais exploser le PC tellement ca me prend la tête :D
 
Bon on reprend depuis le début. On me dit de créer un objet thread, soit. Je crée donc un objet thread pour chaque fonction à lancer en temps que thread. Deja est ce que je fais une connerie ?
Parce qu'au final mon gros problème c'est qu'entre mes 4 classes mes différents threads sont incapables de se voir. Je comprends plus rien la :/
Comment faire donc pour qu'un objet thread puisse être vu de toutes les classes ? dans un thread j'appelle des fonctions, et ds certaines de ces fonctions j'utilise les Suspend() et Resume() sauf que ca marche jamais.
 
Please ! en plus imfaisable de trouver un exemple sur google ca sort tjrs des pages de Java qui en plus sont nulles ... c tjrs des exemples à la con en +

Reply

Marsh Posté le 10-04-2003 à 12:23:28    

j'ai pas tout compris a ce ke tu voulais, mais essayes deja de mettre une sorte de struct en globale, ou tu mettras un pointeur sur toutes tes classes utilisées, et tous les objets ke tu pourras avoir besoin...

Reply

Marsh Posté le 10-04-2003 à 13:33:59    

ben oui en fait c'est bien ca mon pb, c'est que je crée mes threads ds des fonctions membre d'une classe, et donc je peux pas y accéder ailleurs :D
Comment on fait pour mettre des variables globales ? en C c'est tout con suffit de le mettre en haut, mais la :??:
 
Jcrois que ce truc va d'ailleurs m'aider pas mal pour le reste :D

Reply

Marsh Posté le 10-04-2003 à 13:57:06    

LeMakisar2 a écrit :

ben oui en fait c'est bien ca mon pb, c'est que je crée mes threads ds des fonctions membre d'une classe, et donc je peux pas y accéder ailleurs :D
Comment on fait pour mettre des variables globales ? en C c'est tout con suffit de le mettre en haut, mais la :??:
 
Jcrois que ce truc va d'ailleurs m'aider pas mal pour le reste :D


 
pour mettre des globales en C++, me semble ke c'est pareil qu'en C, tu les mets en haut, en extern ou non.
 
par contre des gens vont te dire ke mettre plein de globales c'est crade, et ils auront ptet raison, mais apres si ca t'arrange, fais le sans hesiter...

Reply

Marsh Posté le 10-04-2003 à 18:13:55    

ben merci :)
c'est ce que j'ai fait et ca marche :)
bon maintenant il me reste un problème de lenteur extreme, mais je me suis pas encore penché dessus, c surement une tite connerie :)
La suite à demain :D

Reply

Marsh Posté le 14-04-2003 à 07:56:47    

bon j'ai résolu mon problème de lenteur :)
Par contre, j'ai remarqué que qd on crée un thread et qu'on ne le lance pas directement, on peut appeler une fois la méthode resume() pour le lancer, mais une fois qu'il a fini de s'exécuter, on ne peut pas relancer ce thread avec resume() ... j'ai vu sur la doc en ligne qu'il fallait créer un TThreadList, mais je vois pas trop la différence au final ... pis c pas très coimpréhensible le code qu'ils filent en exemple, enfin disons, je vois pas trop ou placer ca :??:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed