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

  FORUM HardWare.fr
  Programmation

  WIN32: Gros probleme de MultiThreading

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

WIN32: Gros probleme de MultiThreading

n°48172
phlb
Posté le 20-07-2001 à 21:23:50  profilanswer
 

Je suis sous Visual C++ 6.0 SP4, Windows NT 4.0 SP 5.
 
Une application console:  
 
Voila je presente le probleme:
 
j'ai 2 threads (thread1 et thread2)
et un troisieme: dummyThread.
 
thread1 envoi un message au thread2.
thread2 etait en attente de message et a la reception du message de thread1 il suspend ce dernier.  
 
C'est la que tout se passe mal.
 
Tous les threads user sont bloques meme le dummy thread qui n'a rien demander.
 
Ce cas ce present uniquement si dans la boucle du thread1 apres le PostThreadMessage je n'ai aucun appel qui le mettrait en sommeil.
 
Si quelqu'un connait ce probleme je suis preneur.
Merci d'avance.

mood
Publicité
Posté le 20-07-2001 à 21:23:50  profilanswer
 

n°48215
phlb
Posté le 21-07-2001 à 10:57:29  profilanswer
 

Quelqu'un aurait-il une idée?

n°48268
phlb
Posté le 21-07-2001 à 20:20:12  profilanswer
 

pas de nouvelle?

n°48302
gilou
Modérateur
Modzilla
Posté le 21-07-2001 à 23:27:48  profilanswer
 

Si au moins tu filais des extraits de code montrant les fonctions spoecifiques des thread employees et le contexte d'appel, peut etre qu'on pourrait avoir des idees, mais sinon, j'ai beau regarder dans ma boule de cristal, je peux pas t'aider plus.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°48355
phlb
Posté le 22-07-2001 à 17:15:08  profilanswer
 

#include <windows.h>
#include <stdio.h>
 
#define MSG_TRANSMITRS232 WM_USER+0x01
 
HANDLE hRs232Task;
LONG   hRs232TaskId;
 
LONG     lInterruptSimTaskId=0;
HANDLE   hInterruptSimTask=NULL;
 
LONG     lDummyThreadId=0;
HANDLE   hDummyThread=NULL;
 
 
//****************************************
DWORD  interruptSimTask(LPVOID lpParameter) {
 
  MSG msg;
   
  while( GetMessage(&msg,NULL,0,0) ){
 
      if(msg.message!=MSG_TRANSMITRS232)continue;
 
      printf("GetMessage\n" );
 
      printf("currenttaskId=%d\n",GetCurrentThreadId());
 
      SuspendThread(hRs232Task);
       
      printf("OS_EnterInterrupt\n" );
 
      printf("transmitRS232SimTask Interrupt\n" );
 
      printf("OS_LeaveInterrupt\n" );
       
      ResumeThread(hRs232Task);
   }
 
   return 0;
}
 
//****************************************
DWORD  dummyTask(LPVOID lpParameter) {
 
   printf("Dummy still alive!\n" );
   while(TRUE){
      printf("Dummy still alive!\n" );
      Sleep(1000);
       
   }
   return 0;
   
}
 
//****************************************
DWORD rs232Task(LPVOID lpvParameter){
   
   Sleep(1000);
 
   while(TRUE){
      Sleep(0);
      printf("Wait Message ...\n" );
 
      PostThreadMessage(lInterruptSimTaskId,MSG_TRANSMITRS232,0,0);
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
      printf("PostThreadMessage ok!\n" );
       
   }
   
   return 0;
 
}
 
//****************************************
void main(void){
 
   hInterruptSimTask = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)interruptSimTask, NULL, 0, &lInterruptSimTaskId );  
   hDummyThread      = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)dummyTask, NULL, 0, &lDummyThreadId );  
   Sleep(2000);
   hRs232Task = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)rs232Task, NULL, 0, &hRs232TaskId );  
 
   while(TRUE)Sleep(100);
}

n°48358
phlb
Posté le 22-07-2001 à 17:23:32  profilanswer
 

dès que j'appel SuspendThread, dans le thread "interruptSimTask", pour suspendre le thread "rs232Task", toutes les threads sont bloquées, mais alors tous.
 
Parcontre si je mets un sleep(0) juste après le postThread message dans le thread "interruptSimTask", alors là ça fonctionne.
 
je comprends pas??????

n°48427
phlb
Posté le 23-07-2001 à 22:53:42  profilanswer
 

y'a quelqu'un???????

n°48466
Guz
Posté le 24-07-2001 à 09:50:54  profilanswer
 

Salut,
 
Je voudrai que tu me montres les lignes de code ou tu cree tes threads, je pense que tu as un probleme de "dependances". En effet si tes threads ont une mere et que tu suspends celle-ci, les threads enfants seront suspendus aussi.
 
Regardes ou copie moi le bout de code.
 
Sinon envoie-moi ton projer a guz@free.fr je regarde et je t'expliaue.
 
A plus.

n°48671
phlb
Posté le 24-07-2001 à 21:02:36  profilanswer
 

Guz je t'ai donc envoyé le projet par mail.
 
Si quelqu'un d'autre veut apporté sa petite contribution.

n°48720
Guz
Posté le 25-07-2001 à 10:21:19  profilanswer
 

Salut,
 
J'ai pas recu ton projet alors essaie sur chery_guillaume@hotmail.com.
 
Voila je regarde et je te dirai ce que je comprends sur le forum.
 
A +. Guz.

mood
Publicité
Posté le 25-07-2001 à 10:21:19  profilanswer
 

n°48884
phlb
Posté le 25-07-2001 à 20:30:37  profilanswer
 

j'ai tout renvoyé...

n°49411
phlb
Posté le 27-07-2001 à 22:28:56  profilanswer
 

Il est passé où le gars GUZ????

n°49807
phlb
Posté le 30-07-2001 à 21:12:27  profilanswer
 

Quelqu'un aurait il une idée sur mon probleme.


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

  WIN32: Gros probleme de MultiThreading

 

Sujets relatifs
GROS PB POUR LA SECU D UN SITE, BESOIN DE PROSprobleme avec JIRC
[PHP / Javascript] Problème pour passer des paramètres!php:?? problème bizarre...
XML/XSL] Probleme au brassage[java] problème de dessin
[C 16bits] gestions des nom longs de Win32[GDI+] Problème avec l'initialisation d'image
[Java] Problème d'accents dans un ByteArrayOutputStreamProblème de compilation
Plus de sujets relatifs à : WIN32: Gros probleme de MultiThreading


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