Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3037 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] CreateThread(); -> Exemple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] CreateThread(); -> Exemple

n°56937
antsite
Je me souviens
Posté le 02-09-2001 à 13:49:07  profilanswer
 

Quelqu'un pourrait-il en quelques lignes (le moins possible !) me faire un petit exemple de l'emploi de la fonction CreateThread et de ExitThread() (Lancer une fonction et l'arrêter ensuite).
Doit-on obligatoirement lancer ExitThread(); à la fin de la fonction lancée par CreateThread() ?

mood
Publicité
Posté le 02-09-2001 à 13:49:07  profilanswer
 

n°56946
aqwsezsxdr
Posté le 02-09-2001 à 14:15:21  profilanswer
 

-si tu veux faire simple, utilise _beginthread ou _beginthreadex
si tu n'utilise pas les MFC
sinon
AfxBeginThread
leur utilisation est triviale  
 
 
UINT corpsDuThread( LPVOID param )
{
...
return 1;
}
...
 
AfxBeginThread(corpsDuThread, donnee);
 
dans donnee, moi je mets souvent un this  ;)

n°56949
antsite
Je me souviens
Posté le 02-09-2001 à 14:31:03  profilanswer
 

oui mais comment faire pour arrêter le thread à partir d'une autre fonction ?

n°56959
aqwsezsxdr
Posté le 02-09-2001 à 16:00:58  profilanswer
 

supposons que dans la methode thread t'as un
 
UINT corpsDuThread(LPVOID param)
{
while(1)
{
}
 
return 1;
}
 
eh bien tu remplace le 1 par un booleen que tu set a true au debut et que tu vas mettre a false dans l'autre fct quand tu voudras que ton thread s'arrete.
 
Il est fortement conseille de toujours sortir de la fonction thread par un return normal et de ne pas passer par une des methodes de l'api, qui risque de provoquer dans le meilleur des cas une fuite de mem...

n°56960
antsite
Je me souviens
Posté le 02-09-2001 à 16:14:30  profilanswer
 

Je rencontre alors un problème :
Je clique sur un bouton Start de mon application qui lance le thread (while(n == 0)...). Chaque boucle dure un certain temps.
Je ferme mon appli en cliquant sur la croix en haut à droite. (J'ai bien pris soin de dire n=1 si on ferme). Mais là, vu que la boucle while n'est pas au niveau du test de n, le thread ne s'arrête pas (ou mal, la fonction ne se finissant pas) et j'ai un message d'erreur de windows.
Comment faire alors pour éviter ceci en fermant correctement le thread (c pour celà que je pensais à une des méthodes de l'api) !

n°56967
aqwsezsxdr
Posté le 02-09-2001 à 17:59:16  profilanswer
 

une solution simple c'est de faire le test sur n un peu plus souvent. Du genre  
if(!n) return 0;  
que tu places à un endroit "frequenté" de ta boucle while

n°56991
antsite
Je me souviens
Posté le 02-09-2001 à 20:32:11  profilanswer
 

Ben c pas possible car c une et une seule fonction qui prend du temps (connect()) ! Et puis je sais pas ce que tu en penses mais ça m'as pas l'ai très rigoureux ! ;) Mais c pas bête !

n°56994
aqwsezsxdr
Posté le 02-09-2001 à 20:43:55  profilanswer
 

moi je changerais de socket, tu en prends une non bloquante et juste apres le connect, tu fais un select avec un timeout pas trop important pour verifier si ta socket deviens writable.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] CreateThread(); -> Exemple

 

Sujets relatifs
[C++] Prenons une forme simple... un cercle par exemple :)Besoin d'exemple pour PHP3 et mysql.
CFile Exemple ?ASP : pouvez me donner un exemple pour la commande UPDATE ???
[VB / API] CreateThread et TerminateThread 
Plus de sujets relatifs à : [C++] CreateThread(); -> Exemple


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)