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

  FORUM HardWare.fr
  Programmation
  C++

  Passage paramètre à une thread

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage paramètre à une thread

n°1007034
le_pacifa
Posté le 09-03-2005 à 16:39:18  profilanswer
 

Bonjour je suis sous visual studio 6 et je cherche à faire une thread qui va m'afficher genre toutes les 200 ms la valeur d'une variable présente dans la fonction appellant la thread.
 
Comment je peux faire pour passer un pointeur sur cette variable à ma thread ?
 
MErci d'avance.


---------------
APB
mood
Publicité
Posté le 09-03-2005 à 16:39:18  profilanswer
 

n°1007056
jan0
Posté le 09-03-2005 à 17:13:34  profilanswer
 

un thread prend un seul paramètre de type void*
donc en gros lors de la création du thread tu passes ton pointeur vers ta variable ( ou vers une structure par exemple pour passer plusieures variables) en le castant en void* et puis tu le recaste dans ton thread.  
 

le_pacifa a écrit :

la valeur d'une variable présente dans la fonction appellant la thread.


achtung a la portée de tes variables aussi

n°1007069
le_pacifa
Posté le 09-03-2005 à 17:19:54  profilanswer
 

J'ai le droit de faire un truc porc genre  
 
CreateThread(NULL,NULL,ThreadProc,(LPVOID)&toto,NULL,&ThreadId)
 
 
et ensuite dans ma fonction ThreadProc je fais comment pour aller lire toto ?


---------------
APB
n°1007095
jan0
Posté le 09-03-2005 à 18:00:05  profilanswer
 

dans ThreadProc(void* param)
tu mets  
type_de_toto toto = *((type_de_toto*)param)
 
oui c'est très sale


Message édité par jan0 le 09-03-2005 à 18:00:31
n°1008766
popi016
Posté le 10-03-2005 à 19:58:52  profilanswer
 

jan0 a écrit :

dans ThreadProc(void* param)
tu mets  
type_de_toto toto = *((type_de_toto*)param)
 
oui c'est très sale


 
 
ou plus propement :
 
[cpp]
hThread = CreateThread(NULL, NULL, fctThread, (LPVOID)(&toto), 0, &ThreadID);
 
...
 
DWORD WINAPI fctThread(LPVOID param)
{
 type_de_toto *toto  = const_cast<type_de_toto>(param);
...
}
[cpp]

n°1008768
popi016
Posté le 10-03-2005 à 20:00:08  profilanswer
 

[quotemsg=1008766,5,241217]ou plus propement :
 

Code :
  1. hThread = CreateThread(NULL, NULL, fctThread, (LPVOID)(&toto), 0, &ThreadID);
  2. ...
  3. DWORD WINAPI fctThread(LPVOID param)
  4. {
  5. type_de_toto *toto  = const_cast<type_de_toto>(param);
  6. ...
  7. }


 
:D :D :D

n°1009959
willynt
Posté le 11-03-2005 à 15:50:50  profilanswer
 

Salut,
 
Idéalement, faudrait penser à protéger l'accès à cette varaible par une CriticalSection.
En effet, si un des threads la modifie, pendant que l'autre la lit, tu risque d'avoir des valeurs "farfelues".
Je pense que ca ne doit pas arriver avec un système mono-proc.
Mais ca arrivera sous un bi-proc (voir avec de l'HT ?)...
 
William
http://www.directupdate.net/

n°1009998
le_pacifa
Posté le 11-03-2005 à 16:24:09  profilanswer
 

Oki merci je vais jeter un oeil :)
 
:)


---------------
APB
n°1010090
mynab
Posté le 11-03-2005 à 17:43:19  profilanswer
 

Ca peut tout a fait arriver sur un systeme mono-proc car l'instruction de lecture ou d'ecriture n'est pas atomique et que donc ton processeur peut tres bien switcher de thread en plein milieu de ton ecriture (qui meme si cela represente une ligne de code C++ cela ne represente pas une seule ligne de code ASM).
 
 
 

willynt a écrit :

Salut,
 
Idéalement, faudrait penser à protéger l'accès à cette varaible par une CriticalSection.
En effet, si un des threads la modifie, pendant que l'autre la lit, tu risque d'avoir des valeurs "farfelues".
Je pense que ca ne doit pas arriver avec un système mono-proc.
Mais ca arrivera sous un bi-proc (voir avec de l'HT ?)...
 
William
http://www.directupdate.net/



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

  Passage paramètre à une thread

 

Sujets relatifs
fonction avec passage par reference de variable[resolu] [JSP][Tomcat 5] Problème lors du passage de paramètres ?
[linux 2.4 usb] isochrone implique-t-il thread ?[SVG] lien avec passage de paramètres
[Activex] - Passage de paramètre (Tableau)passage de donnée tablo d'une page à l'autre
Return avec un threadPassage de variables...
boite de dialogue lancée par un thread bug!Lancer un thread et passage de paramètre
Plus de sujets relatifs à : Passage paramètre à une thread


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