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

  FORUM HardWare.fr
  Programmation
  C

  [Windows] thread comment les créer, les lancer simultanément ???

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Windows] thread comment les créer, les lancer simultanément ???

n°506888
CodeName47
Posté le 03-09-2003 à 23:22:04  profilanswer
 

Bonjour à tous !  :hello:  
 
Je pense que le titre est assez explicite  
 
J'ai fait des recherches sur ce forum, j'ai pas trouvé grand chose que je pouvais comprendre  :pt1cable:  
 
quels avantages présentent les threads ?
pour ma part j'en ai besoin pour pouvoir lancer simultanément deux processus !
 
je programme en C++ sous windows et j'ai fini par trouver un morceau de code utilisant l'api windows et montrant clairement et hyperfacilement comment lancer plusieurs processus simultanément :
 

Code :
  1. #include "stdio.h"
  2. #include "windows.h"
  3. #include "process.h"
  4. #include "winbase.h"
  5. // déclaration de la section critique
  6. // code de la première tâche : PremierThread
  7. DWORD WINAPI PremierThread ( LPVOID IpvThreadParam )
  8. {
  9. int i ;
  10. char chaine [ 8 ] = "BONJOUR" ;
  11.   // Entrée en section critique
  12.   for ( i = 0 ; i < 7 ; i++ )
  13.   {
  14.     printf ( "%c", chaine [ i ] );
  15.     Sleep ( 10 ) ;
  16.   }
  17.   // Libération de la section critique
  18.   return ( 0 ) ;
  19. }
  20. // code de la seconde tâche : SecondThread
  21. DWORD WINAPI SecondThread ( LPVOID IpvThreadParam )
  22. {
  23. int i ;
  24. char chaine [ 8 ] = "BONSOIR" ;
  25.   // Entrée en section critique
  26.   for ( i = 0 ; i < 7 ; i++ )
  27.   {
  28.     printf ( "%c" , chaine [ i ] ) ;
  29.     Sleep ( 10 ) ;
  30.   }
  31.   // Libération de la section critique
  32.   return ( 0 ) ;
  33. }
  34. // point d'entrée du programme
  35. void main ( )
  36. {
  37.   // Initialisation de la section critique
  38.   HANDLE hThreads [ 2 ] ;
  39.   DWORD dwThreadId ;
  40.   DWORD dwThreadParam = 1 ;
  41.   // création des Threads
  42.  
  43.   hThreads [ 0 ] = CreateThread ( NULL, NULL, PremierThread, &dwThreadParam, 0, &dwThreadId ) ;
  44.   hThreads [ 1 ] = CreateThread ( NULL, NULL, SecondThread, &dwThreadParam, 0, &dwThreadId ) ;
  45.   // attente de fin d'exécution des Threads
  46.   WaitForMultipleObjects ( 2, hThreads, TRUE, INFINITE) ;
  47.   // destruction des Threads et de la section critique  
  48.   CloseHandle ( hThreads [ 0 ] ) ;
  49.   CloseHandle ( hThreads [ 1 ] ) ;
  50.   // destruction de la section critique
  51. }


 
on voit clairement dans ce code comment lancer les deux processus en meme temps, j'ai essayé avec un troisième ca passait parfaitement
 
je voudrais savoir (du plus simple possible) comment coder l'équivalent de ce programme sans utiliser l'API windows !
je rappelle que je code sous windows !
 
voila
 
J'attends vos remarques et vos conseils avec impatience
 
Merci à tous !


Message édité par CodeName47 le 03-09-2003 à 23:24:22
mood
Publicité
Posté le 03-09-2003 à 23:22:04  profilanswer
 

n°506896
mrbebert
Posté le 03-09-2003 à 23:37:11  profilanswer
 

Tu confonds "thread" et "processus". spa pareil :non:  
Ce programme crée plusieurs threads, mais ca reste un unique processus :)

n°506994
VisualC++
J'va y penser ...
Posté le 04-09-2003 à 07:54:34  profilanswer
 

Utilise la lib pThread si tu veux pas d'appel a l'api win direct et un code portable (enfin tant que pthread dispo mais c dispo sous plein d os)

n°507012
CodeName47
Posté le 04-09-2003 à 09:29:40  profilanswer
 

:pt1cable: oué je confond un peu tout mais j'ai du mal à me retrouver dans tout ca ! je voulais dire un processus qui exécute plusieurs morceaux de codes simultanément
 
je vais essayer de reproduire le meme code avec la librairie pthread, je verrai bien ce que ca donne et je posterai le code une fois le truc terminé pour dire ce que vous en pensé !

n°507095
CodeName47
Posté le 04-09-2003 à 10:39:14  profilanswer
 

:( oué bah j'y arrive pas avec pthread, j'ai compris le fonctionnement de cette librairie et de ces fonctions mais mon compilateur (borland c++ 5)me sort un message d'erreur "external unresolved error _pthread_create from test.OBJ"  :??:  
j'ai essayé de télécharger une aute librairie pthread et de la mettre en place = pareil !
 
donc le pthread je laisse tomber, je reste sur l'api windows !

n°507103
VisualC++
J'va y penser ...
Posté le 04-09-2003 à 10:45:22  profilanswer
 

Euh juste comem ca en passant ... c bien de DL la lib ... mais c encore mieux de dire a ton compilo de l'utiliser lors du link
 
...
 
ca eviterais les unresolved link ;)

n°507127
CodeName47
Posté le 04-09-2003 à 11:11:41  profilanswer
 

:??: lol plus je cherche des explications moins je comprends
 
sous borland, il y a deux fichiers de configurations qui définissent les options lors de la compilation notamment le path qui contient pthread.h et le path qui contient pthread.lib
 
normalement borland devrait les trouver automatiquement nan ?

n°507144
VisualC++
J'va y penser ...
Posté le 04-09-2003 à 11:23:20  profilanswer
 

C pas parceque ton compilo (linker) connait le path pour allez chercher une lib qu'il connait le nom de la lib a inclure, c a toi de lui donner le PATH ET le nom de la lib

n°507209
HelloWorld
Salut tout le monde!
Posté le 04-09-2003 à 11:59:05  profilanswer
 

Au passage, "en même temps" ça n'a pas de sens.
Un processeur, plusieurs thread à exécuter dessus...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°507218
CodeName47
Posté le 04-09-2003 à 12:06:14  profilanswer
 

Citation :


Au passage, "en même temps" ça n'a pas de sens.  
Un processeur, plusieurs thread à exécuter dessus...  


 
pas fait exprès, j'ai un peu du mal aujourd'hui avec tout ca  :pt1cable:  
 
bon ce coup ci il prend bien ma librairie en compte mais comme si ca suffisait pas il me sort un second message d'erreur :
 
Error : C:\Borland\BCC55\Lib\pthread.lib contains invalid OMF record, type 0x21 (possibly COFF)
 
c encore plus du chinois que la première erreur ce message la !  :??:

mood
Publicité
Posté le 04-09-2003 à 12:06:14  profilanswer
 

n°507232
HelloWorld
Salut tout le monde!
Posté le 04-09-2003 à 12:35:39  profilanswer
 

Ta lib doit être concue pour VC++ et BC++ n'arrive pas à la lire...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°507235
CodeName47
Posté le 04-09-2003 à 12:40:24  profilanswer
 

bah j'ai l'air malin avec mon prog sous borland et ma librairie en VC++  :cry:  
il n'y a meme pas de librairie pthread pour borland = abandon de mon projet  :sweat:  
 
ben merci à tous de vote participation lol
au moins j'aurais appris quelques astuces pour le c++

n°507252
VisualC++
J'va y penser ...
Posté le 04-09-2003 à 13:03:44  profilanswer
 

Lis un peu le site officiel de pthread_lib et tu veras la solution a ton pb

n°507253
HelloWorld
Salut tout le monde!
Posté le 04-09-2003 à 13:04:07  profilanswer
 

Ben si tu as les sources tu compiles la lib avec Borland et tout rentre dans l'ordre.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°507375
CodeName47
Posté le 04-09-2003 à 14:41:46  profilanswer
 

pffff j'en ai marre je laisse tomber  :fou:  
 
1. j'ai essayé de recompiler la librairie avec borland c bourré d'erreur
2. quand je réutilise ilink32 en utilisant le pthread.lib normal, il me sort bien mon éxécutable sans problème à partir de mon fichier compilé !  
le problème bah euh : Aplication Win32 non valide = pas top l'éxécutable !
 
ca me soule, je reessaierai quand j'aurais un visual C++ sous la main

n°712207
tckoullou
Posté le 29-04-2004 à 19:27:27  profilanswer
 

putin t'est naz tu abandonne come sa , faut juste utiliser un petit prog qui ce trouve fourni avec borland il converti le lib vc++ pour borldand il faut quelle soi en omf et la tu les a en coff normale juste la convertion c'est tous.

n°712280
R3g
fonctionnaire certifié ITIL
Posté le 29-04-2004 à 20:51:40  profilanswer
 

HelloWorld a écrit :

Au passage, "en même temps" ça n'a pas de sens.
Un processeur, plusieurs thread à exécuter dessus...

Il a jamais dit qu'il y a qu'un processeur :o


---------------
Au royaume des sourds, les borgnes sont sourds.

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

  [Windows] thread comment les créer, les lancer simultanément ???

 

Sujets relatifs
Lancer Word à partir de IEWindows : Forcer l'ecran a se mettre en veille
Port // sous Windows XPplusieurs Windows sur un dvd???
[windows] port // Createfile() Writefile()[windows]Programmer le port PS/2 ?
Windows - vitesse de connexion au réseau local[C/VB] Créer un .exe en VB qui appelle une DLL écrite en C...
Style Swticher creer 2 présentation differente CSS sur une page HTML[Resolu] [C++ / thread / windows] Demarrer une methode en Thread ?
Plus de sujets relatifs à : [Windows] thread comment les créer, les lancer simultanément ???


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR