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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Killer un thread, mais pas comme un gros cochon :o

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[C++] Killer un thread, mais pas comme un gros cochon :o

n°192229
godbout
Génial.
Posté le 08-08-2002 à 17:11:52  profilanswer
 

J'ai fait un thread qui checke chaque laps de temps si des mails sont arrives.
Donc en gros j'ai un  

Code :
  1. while(1)
  2. {
  3. checkmails();
  4. Sleep(timer);
  5. }


 
Le pb c'est que pour killer le thread je fais un TerminateThread (pas tres propre :/), ca passe sous 2k, mais sous 98 c'est la catastrophe :/ (message box kernel32 dans le vent en continu, reboot oblige).
 
Quelqu'un aurait il une autre technique pour faire ce que j'ai a faire ?
 
merci [:smack]


---------------
Super.
mood
Publicité
Posté le 08-08-2002 à 17:11:52  profilanswer
 

n°192238
antsite
Je me souviens
Posté le 08-08-2002 à 17:16:22  profilanswer
 

BOOL stop = false; //variable globale
 
while(!stop)
{
  Checkmails();
  Sleep();
}
 
Et pour arrêter tu met stop = true;


Message édité par antsite le 08-08-2002 à 17:16:50
n°192249
godbout
Génial.
Posté le 08-08-2002 à 17:22:23  profilanswer
 

ah oui pardon j'ai oublie de preciser certaines choses :D
 
Le pb c'est que le stop = true je pourrais le mettre seulement quand je ferme le programme (je clean tout le bordel). Hors le sleep bloque le thread, donc :/
Le seul moyen ce serait de faire un WaitForSingleObject, mais faudrait que fasse sleeper seulement de quelques secondes, histoire de que le processus principale n'attendent pas 1/2h que le thread se finisse. Mais bon ca c'est pas top.
 
edit: sinon je te remercie bien, j'me souvenais plus comment on sortait d'un while [:fifiz]
 [:ddr555]


Message édité par godbout le 08-08-2002 à 17:22:52

---------------
Super.
n°192342
chrisbk
-
Posté le 08-08-2002 à 18:33:46  profilanswer
 

ben tu chomes pas, toi, dis donc :D
 
edit : surtout quand on pense que je t'ai deja donne une solution [:titprem]
( fais pas un gros sleep mais moulte petit)
 
Sinon t'as regarder si la fonction resume reveillait une thread endornie par sleep ? je sais que l on en avait deja parler mais je ne ne souviens plus du resultat de la discu.....
 
 
(pis mince, je devrais pas te repondre, je suis en vacances :O :D)


Message édité par chrisbk le 08-08-2002 à 18:36:53
n°192344
godbout
Génial.
Posté le 08-08-2002 à 18:36:35  profilanswer
 

putain m'en parle pas j'l'ai grave dans le cul en ce moment.


---------------
Super.
n°192346
chrisbk
-
Posté le 08-08-2002 à 18:37:19  profilanswer
 

Godbout a écrit a écrit :

putain m'en parle pas j'l'ai grave dans le cul en ce moment.




 
See ze edit ;)

n°192349
godbout
Génial.
Posté le 08-08-2002 à 18:44:17  profilanswer
 

chrisbk a écrit a écrit :

 
 
See ze edit ;)




ouais mais nan, deja fait la decoupe en petit bout. Et le Resume il reveille pas le slip ( :D ) :sweat:
 
Putain pkoi j'ai fait info :cry:


---------------
Super.
n°192352
chrisbk
-
Posté le 08-08-2002 à 18:46:52  profilanswer
 

Godbout a écrit a écrit :

 
ouais mais nan, deja fait la decoupe en petit bout. Et le Resume il reveille pas le slip ( :D ) :sweat:
 
Putain pkoi j'ai fait info :cry:




 
Parce que c'est ton destin :O
 
ben tu t'en fous, termine pas la thread, elle se terminera toute seul quand la thread principale se terminera (et basta :O )

n°192358
godbout
Génial.
Posté le 08-08-2002 à 18:49:25  profilanswer
 

nan justement ca chie grave :D


---------------
Super.
n°192360
godbout
Génial.
Posté le 08-08-2002 à 18:50:56  profilanswer
 

pis va t'amuser bordel :o


---------------
Super.
mood
Publicité
Posté le 08-08-2002 à 18:50:56  profilanswer
 

n°192361
zion
Plop
Posté le 08-08-2002 à 18:53:11  profilanswer
 

Euh, tu fais un sleep de 1/2h?  :ouch:  
 
C'est utile d'avoir un thread qui glande comme ca, crée les plutot dans ton programme toutes les 1/2h que d'avoir ton thread qui glande comme ca ;)
 
Sinon comme dis plut haut, fait des sleep de 500ms dans une jolie boucle avec le boolean et hopla  :D


---------------
Informaticien.be - Lancez des défis à vos amis
n°192368
chrisbk
-
Posté le 08-08-2002 à 18:57:53  profilanswer
 

Godbout a écrit a écrit :

pis va t'amuser bordel :o




 
J'attends que les autres zoinzoin en ait fini avec leur mail, et y tapent pas bien vite [:ddr555]

n°192371
godbout
Génial.
Posté le 08-08-2002 à 19:01:29  profilanswer
 

Zion a écrit a écrit :

Euh, tu fais un sleep de 1/2h?  :ouch:  
 
C'est utile d'avoir un thread qui glande comme ca, crée les plutot dans ton programme toutes les 1/2h que d'avoir ton thread qui glande comme ca ;)
 
Sinon comme dis plut haut, fait des sleep de 500ms dans une jolie boucle avec le boolean et hopla  :D  




 
Ben le truc doit checker l'arrive d'un mail selon un timer defini par l'utilisateur, je vois pas comment faire ca autrement.
 
Le coup du 500ms c'est bien sympa, mais c'est un peu merdique. Pis en fait ca marche pas non plus :sweat:


---------------
Super.
n°192376
zion
Plop
Posté le 08-08-2002 à 19:04:58  profilanswer
 

Benh utilise un timer!
 
Un timer qui crée ton thread qui lui se suicide quand il a fini.
 
 ;)


---------------
Informaticien.be - Lancez des défis à vos amis
n°192386
boborde
Posté le 08-08-2002 à 19:11:53  profilanswer
 

Juste une kestion au hasard comme ca .... GodBoot , tu ferais pas infos indus au moins ?

n°192387
chrisbk
-
Posté le 08-08-2002 à 19:13:08  profilanswer
 

Zion a écrit a écrit :

Benh utilise un timer!
 
Un timer qui crée ton thread qui lui se suicide quand il a fini.
 
 ;)  




 
Ah tiens, c pas con ca :D
 
c meme tres intelligent !
 
(cherche du cote de CreateTimer)

n°192389
youdontcar​e
Posté le 08-08-2002 à 19:16:27  profilanswer
 

ben oui, SetTimer() ...

Godbout a écrit a écrit :

Putain pkoi j'ai fait info :cry:


putain pourquoi tu choisis des solutions hyper compliquées :cry:

n°192395
godbout
Génial.
Posté le 08-08-2002 à 19:30:02  profilanswer
 

boborde a écrit a écrit :

Juste une kestion au hasard comme ca .... GodBoot , tu ferais pas infos indus au moins ?




nan :sweat:


---------------
Super.
n°192396
godbout
Génial.
Posté le 08-08-2002 à 19:30:35  profilanswer
 

youdontcare a écrit a écrit :

ben oui, SetTimer() ...putain pourquoi tu choisis des solutions hyper compliquées :cry:




Je vois ca demain, mais en fait le pb n'a pas l'air de venir de la :sweat: :D
 
 
edit: enfin la j'avais tout le bordel a queue qui marchait quoi, juste que sous cette merde de 98 y a kernel qui fait son caca nerveux :mad:


Message édité par godbout le 08-08-2002 à 19:31:47

---------------
Super.
n°192397
godbout
Génial.
Posté le 08-08-2002 à 19:34:14  profilanswer
 

youdontcare a écrit a écrit :

...putain pourquoi tu choisis des solutions hyper compliquées :cry:




Pour info j'avais fait un topic y a quelques semaines, on m'a repondu le thread + sleep (merci chris :D)


---------------
Super.
n°192398
chrisbk
-
Posté le 08-08-2002 à 19:35:45  profilanswer
 

Godbout a écrit a écrit :

 
Pour info j'avais fait un topic y a quelques semaines, on m'a repondu le thread + sleep (merci chris :D)




 
:D
 
G aussi mon quota de connerie a dire :D :O
 
bon, zont fini, ++ :O

n°192434
zion
Plop
Posté le 08-08-2002 à 20:39:10  profilanswer
 

chrisbk a écrit a écrit :

 
 
:D
 
G aussi mon quota de connerie a dire :D :O
 
bon, zont fini, ++ :O




 
Ouai, comme le coup du Resume qui couperait le sleep  :sarcastic:  
 
Non mais le problème c'est que tu es pas dans les 2 rubriques hype, Java ou Delphi.
 
Perso je vais que dans les topics Delphi, mais bon, je sais pas, j'ai été attiré par le sujet  :D


---------------
Informaticien.be - Lancez des défis à vos amis
n°192486
Trickos
Posté le 08-08-2002 à 22:22:15  profilanswer
 

Sinon tu peux sans doute faire un waitforsingleobjectEx en mettant ton thread en alertable, puis avant de sortir, balancer une APC qui le fait juste faire un return.
 
Si ça marche, l'avantage c'est que c'est propre (1000 fois plus qu'un TerminateThread). Mais bon c'est très théorique j'ai jamais essayé.

n°192734
godbout
Génial.
Posté le 09-08-2002 à 10:43:25  profilanswer
 

Le WaitFor deja fait, par contre APC connait pas :??:
 
Sinon j'essaye avec un SetTimer, je pense que je devrais pouvoir arriver a quelque chose (:sarcastic:), mais bon si le timer se balance pendant que mon prog fait autre chose ca fait koi ? :??:


---------------
Super.
n°192876
mrbebert
Posté le 09-08-2002 à 12:30:03  profilanswer
 

Godbout a écrit a écrit :

Le WaitFor deja fait, par contre APC connait pas :??:
 
Sinon j'essaye avec un SetTimer, je pense que je devrais pouvoir arriver a quelque chose (:sarcastic:), mais bon si le timer se balance pendant que mon prog fait autre chose ca fait koi ? :??:



Le timer, il envoie juste un message, il me semble. Donc, faut que ton appli regarde sa liste de messages de temps en temps.

n°192947
zion
Plop
Posté le 09-08-2002 à 14:23:01  profilanswer
 

mrbebert a écrit a écrit :

Le timer, il envoie juste un message, il me semble. Donc, faut que ton appli regarde sa liste de messages de temps en temps.




 
Ouaip, c'est exactement ca ;)


---------------
Informaticien.be - Lancez des défis à vos amis
n°192951
chrisbk
-
Posté le 09-08-2002 à 14:28:53  profilanswer
 

Zion a écrit a écrit :

 
 
Ouai, comme le coup du Resume qui couperait le sleep  :sarcastic:  

Non mais le problème c'est que tu es pas dans les 2 rubriques hype, Java ou Delphi.
 
Perso je vais que dans les topics Delphi, mais bon, je sais pas, j'ai été attiré par le sujet  :D  




 
of je vois pas ce que ca a de si incongru, pouvoir sortir une thread d'un sleep ne me parait pas etre une chose completement idiote, et le resume est justement la pour reveiller une thread, alors....

n°192954
chrisbk
-
Posté le 09-08-2002 à 14:30:00  profilanswer
 

Zion a écrit a écrit :

 
 
Ouaip, c'est exactement ca ;)
 




 
 
 
nonske tu peux aussi t'arranger pour que plutot que de t'envoyer un msg il appelle une fonction (je sais plus c quoi la fonction de creation du timer, mais c largement plus pratique)

n°192962
zion
Plop
Posté le 09-08-2002 à 14:36:17  profilanswer
 

chrisbk a écrit a écrit :

 
 
of je vois pas ce que ca a de si incongru, pouvoir sortir une thread d'un sleep ne me parait pas etre une chose completement idiote, et le resume est justement la pour reveiller une thread, alors....




 
Pour réveiller un thread que tu as suspendu et qui ne sera plus séléctionné par ton task manager... A moins que le sleep ne soit géré au niveau du task manager (la franchement j'ai un énorme doute), ca me parait fort peu probable.
 
Sinon euh, c'est pas plus mal le coup du message pour le timer tu sais, ca te permet au moins de savoir que t'es rien en train de faire vu que t'es en train de pouvoir gérer les messages.


---------------
Informaticien.be - Lancez des défis à vos amis
n°192979
godbout
Génial.
Posté le 09-08-2002 à 14:50:09  profilanswer
 

chrisbk a écrit a écrit :

 
 
 
 
nonske tu peux aussi t'arranger pour que plutot que de t'envoyer un msg il appelle une fonction (je sais plus c quoi la fonction de creation du timer, mais c largement plus pratique)




C'est ce que j'ai fait pour l'instant, je renvoie a une fonction qui traite ce que j'ai a faire, mais en fait le pb vient d'autre chose, bon c'est la merde en fait :D


---------------
Super.
n°192980
zion
Plop
Posté le 09-08-2002 à 14:51:46  profilanswer
 

Godbout a écrit a écrit :

 
C'est ce que j'ai fait pour l'instant, je renvoie a une fonction qui traite ce que j'ai a faire, mais en fait le pb vient d'autre chose, bon c'est la merde en fait :D




 
 :lol:  
 
Oups, désolé  :(


---------------
Informaticien.be - Lancez des défis à vos amis
n°192983
chrisbk
-
Posté le 09-08-2002 à 14:56:11  profilanswer
 

Godbout a écrit a écrit :

 
C'est ce que j'ai fait pour l'instant, je renvoie a une fonction qui traite ce que j'ai a faire, mais en fait le pb vient d'autre chose, bon c'est la merde en fait :D




 
tu nous as encore pondu un gros sac de noeud, toi :D

n°192984
godbout
Génial.
Posté le 09-08-2002 à 14:56:37  profilanswer
 

:D
 
Nan en fait c'est la merde parce que je sais pas ce que le prog principale fait, et apparemment c'est lui qui merde dans son clean up.
 
(ca veut rien dire mais je me comprends)


---------------
Super.
n°192985
godbout
Génial.
Posté le 09-08-2002 à 14:56:53  profilanswer
 

chrisbk a écrit a écrit :

 
 
tu nous as encore pondu un gros sac de noeud, toi :D




 [:super chinois] [:vincent cassel]


---------------
Super.
n°192989
chrisbk
-
Posté le 09-08-2002 à 14:59:15  profilanswer
 

Godbout a écrit a écrit :

:D
 
Nan en fait c'est la merde parce que je sais pas ce que le prog principale fait, et apparemment c'est lui qui merde dans son clean up.
 
(ca veut rien dire mais je me comprends)




 
 
Excuse bidon detaictaid :O :D

n°192992
godbout
Génial.
Posté le 09-08-2002 à 15:03:34  profilanswer
 

Et allez encore une connerie :sarcastic: :D


---------------
Super.
n°193338
Musaran
Cerveaulté
Posté le 10-08-2002 à 05:53:00  profilanswer
 

Pourquoi cela ne marcherait'il pas ?

Code :
  1. BOOL stop= false ;
  2. const DWORD checkmailstime= 30*60*1000 ; //30 minutes
  3. const DWORD checkstoptime =     1*1000 ; // 1 seconde
  4. DWORD WINAPI fThread(LPVOID parg){
  5. for( DWORD t=0 ; !stop ; t+= checkstoptime ){
  6.  if(t>checkmailstime){
  7.   t%= checkmailstime ;
  8.   checkmails() ;
  9.  }
  10.  Sleep(checkstoptime);
  11. }
  12.   return 0;
  13. }


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°194193
godbout
Génial.
Posté le 12-08-2002 à 17:14:44  profilanswer
 

Sympa comme idee mais j'ai laisse tomber les threads, je passe maitenant par un timer, plus de pb, ca fait chier mais bon.


---------------
Super.
n°194194
LetoII
Le dormeur doit se réveiller
Posté le 12-08-2002 à 17:24:53  profilanswer
 

musaran a écrit a écrit :

Pourquoi cela ne marcherait'il pas ?

Code :
  1. BOOL stop= false ;
  2. const DWORD checkmailstime= 30*60*1000 ; //30 minutes
  3. const DWORD checkstoptime =     1*1000 ; // 1 seconde
  4. DWORD WINAPI fThread(LPVOID parg){
  5. for( DWORD t=0 ; !stop ; t+= checkstoptime ){
  6.  if(t>checkmailstime){
  7.   t%= checkmailstime ;
  8.   checkmails() ;
  9.  }
  10.  Sleep(checkstoptime);
  11. }
  12.   return 0;
  13. }






 
C pas pour critique mais ton for il est assez moche là, un while ne serai pas plus aproprié (d'un point de vue purement estéthique) ?
Bon ok ça marche le for, mais je trouve ça assez moche là. Ca vient peut être de moi remarque.


---------------
Le Tyran
n°194195
godbout
Génial.
Posté le 12-08-2002 à 17:25:45  profilanswer
 

IL aurait pu mettre un break :o


---------------
Super.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  [C++] Killer un thread, mais pas comme un gros cochon :o

 

Sujets relatifs
Gros probleme sur mon script d'inscription... Help me....Thread
thread[PHP] Besoin d'un Gros coup de main pour finir mon site
Gros bleme de mise en page d un design :([JAVA] probleme de thread
[Perl] Mémoire partagé en multi-thread[APACHE + PHP ] uploader des gros fichiers
[Java] utilisation de thread[SDL + thread + DLL] Est-il possible de faire un mélange des trois ?
Plus de sujets relatifs à : [C++] Killer un thread, mais pas comme un gros cochon :o


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR