TThread et oui encore ! (et TTimer :D)

TThread et oui encore ! (et TTimer :D) - C++ - Programmation

Marsh Posté le 03-04-2003 à 15:15:27    

voila c'était simplement pour savoir, j'ai lu qu'il fallait créer une classe héritant de TThread, seulement voila, j'ai deja mes 4 modules et donc 4 classes toutes bien faites, donc comment bidouiller le tout ?  
le but est d'utiliser certaines fonctions de certaines des classes que j'ai deja ...  
par exemple j'ai un module (contenant une classe) qui se charge d'envoyer et recevoir des données grace a des fonctions membre de la classe. Je voudrais pouvoir envoyer et recevoir des données en même temps grace a des threads ... alors je change ma classe toute simple pour une classe descendant de TThread ou faut faire autrement :??:
 
Merci !


Message édité par LeMakisar2 le 04-04-2003 à 10:03:37
Reply

Marsh Posté le 03-04-2003 à 15:15:27   

Reply

Marsh Posté le 03-04-2003 à 15:32:58    

t'as vu ca ou qu'il fallait forcement une classe héritant de CThread pour faire des threads ?
 
Dans ton cas, des simples CreateThread() suffisent. Apres Comme lpParameter tu passes la ou les classes dont t'as besoin.

Reply

Marsh Posté le 04-04-2003 à 10:03:10    

ben en fait j'ai vu ca ds le manuel de BCB :D
Des CreateThread donc ? je vais voir ca, il me semble que ca me dit qqch ...
Sinon j'en profite pou poser une tite question sur les timers.
J'ai créé un TTimer, j'ai réglé l'intervalle et son activation sur false. A un moment j'appelle une fonction dont le but est, sur 1 seconde, de faire 10 transferts de données. Donc je peux activer mon timer et mettre l'envoi de données dans l'évenement OnTimer associé, seulement je ne sais pas vraiment l'arreter ... si je change la propriété Enabled sur false à l'intérieur de l'évenement (sous la condition que j'ai fait mes 10 envois), apparemment ca ne marche pas.
Quand je mets le timer en marche, la fonction appelée continue de s'exécuter en même temps ? comment faire pour attendre la fin de mes 10 envois ? avec un autre timer ? :D parce que j'ai essayé une boucle mais apparemment j'ai du mal m'y prendre, ca bloque indéfiniment dans la boucle :/
 
Voila toute suggestion est la bienvenue :)

Reply

Marsh Posté le 04-04-2003 à 10:32:40    

LeMakisar2 a écrit :

ben en fait j'ai vu ca ds le manuel de BCB :D
Des CreateThread donc ? je vais voir ca, il me semble que ca me dit qqch ...


 
Puisqu'on te fournit une classe Thread, pourqiuoi ne pas l'utiliser? Je ne vois vraiment pas l'interêt d'utiliser CreateThread... En plus, l'utilisation de la classe TThread est simplissime: il suffit de créer une classe qui hérite de TThread et d'implémenter la méthode Execute (nom de méthode à vérifier... ca fait si longtemps...). Le corps de cette fonction est ce qui sera exceuté dans le thread. Et la classe te fournit déja les méthodes pour arrêter le thread proprement, te synchroniser sur sa terminaison, etc...
Sans parler de la possibliliter d'acceder à tous les membres de la classe dans la méthode Execute, sans avoir besoin de passer un pointeur sur un obscur contexte, etc...
Non vraiment, je ne vois pas l'interêt d'un appel à CreateThread.
 
 

Reply

Marsh Posté le 04-04-2003 à 10:49:15    

Tu as tout a fait raison, en fait ca dépend de l'utilisation kon veut en faire :
 
Si c'est juste créer un thread ki va faire 2 ou 3 choses puis quitter, alors créer une classe ki dérive de CThread ne sert pas a grand chose si on utilise pas ses fonctionnalités.
 
Apres si on veut avoir un meilleur conrtole sur le thread, suspendre, reprendre, relancer le thread ou savoir son état, alors la c'est carrement mieux ta solution.

Reply

Marsh Posté le 04-04-2003 à 11:22:02    

j'aurais besoin de synchroniser certaines choses ... donc je vais utiliser une classe dériuvée de TThread.
Mais le problème c'est, j'ai deja 4 classes, donc dansles classes thread que je vais créer je vais simplement appeler les fonctions des autres classes dont j'ai besoin, ou alors il faut que je modifie tout ?
Par exemple, j'ai une fonction d'envoi sur un port et une fonction de reception en provenance du port, je veux utiliser les deux simultanément, je les laisse dans leur classe (regroupant toutes les opérations sur le port) et de la classe thread créée, je les appelle, ou alors elle doivent faire partie de la méthode execute :??:
 
En gros ce que je demande c'est : est que pour chaque fonction destinée à être utilisée dans un thread il me faut une classe thread différente ?

Reply

Sujets relatifs:

Leave a Replay

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