Passage paramètre à une thread - C++ - Programmation
Marsh Posté le 09-03-2005 à 17:13:34
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
Marsh Posté le 09-03-2005 à 17:19:54
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 ?
Marsh Posté le 09-03-2005 à 18:00:05
dans ThreadProc(void* param)
tu mets
type_de_toto toto = *((type_de_toto*)param)
oui c'est très sale
Marsh Posté le 10-03-2005 à 19:58:52
jan0 a écrit : dans ThreadProc(void* param) |
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]
Marsh Posté le 10-03-2005 à 20:00:08
[quotemsg=1008766,5,241217]ou plus propement :
Code :
|
Marsh Posté le 11-03-2005 à 15:50:50
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/
Marsh Posté le 11-03-2005 à 17:43:19
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, |
Marsh Posté le 09-03-2005 à 16:39:18
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