[Visual C++] creation de thread

creation de thread [Visual C++] - Programmation

Marsh Posté le 27-02-2001 à 21:56:17    

si quelqu'un pouvait m'expliquer comment cree un thread en c++ j'essai avec la fonction :AfxBeginThread mais je comprend pas trop les arguments a passer  
 
merci d'avance

Reply

Marsh Posté le 27-02-2001 à 21:56:17   

Reply

Marsh Posté le 28-02-2001 à 09:01:49    

hum... si tu comprends pas trop les arguments à passer, j'ai peur que ce ne soit parce que tu n'as pas bien compris le mécanisme des threads. M'enfin bon: un petit eclaircissement s'impose. Alors on prend la doc et on regarde ce qui est marqué :)
 
 
CWinThread* AfxBeginThread(  AFX_THREADPROC pfnThreadProc,
    LPVOID pParam,
    int nPriority = THREAD_PRIORITY_NORMAL,
    UINT nStackSize = 0,
    DWORD dwCreateFlags = 0,
    LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
 
 
pfnThreadProc:
--------------
pointeur sur la fonction qui sera executée dans le thread. Ne peut pas être NULL
(de toute façon, faire un thread avec une fonction NULL... autant ne rien faire :))
Cette fonction doit être du type suivant:
 
 UINT MyControllingFunction( LPVOID pParam );
 
(rappel: LPVOID = void *)
 
 
pParam:
--------------
paramètre à passer en argument à la fonction qui sera executée dans le thread.
typiquement, si tu as plusieures paramètres à passer à la fonction qui sera
executée dans le thread, tu définies une structure qui contient tous ces aruments.
Puis tu défini la fonction pricipale du thread (pfnThreadProc) comme ayant en
paramètre un void *, sur lequel tu feras un casting explicite dans le format de
ta structure.
 
 
exemple:
 
struct toto{
int a;
float b;
};
 
UINT MyControllingFunction( LPVOID pParam )
{
int aa = (toto *) pParam->a;
int bb = (toto *) pParam->b;
}
 
 
nPriority:
--------------
ben c la priorité du thread... tu laisses celle par défaut, c en général
suffisant. Si vraiment ca va pas, tu changeras...
 
pour info:
Priority Meaning  
THREAD_PRIORITY_ABOVE_NORMAL Indicates 1 point above normal priority for the priority class.  
THREAD_PRIORITY_BELOW_NORMAL Indicates 1 point below normal priority for the priority class.  
THREAD_PRIORITY_HIGHEST Indicates 2 points above normal priority for the priority class.  
THREAD_PRIORITY_IDLE Indicates a base priority level of 1 for IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, or HIGH_PRIORITY_CLASS processes, and a base priority level of 16 for REALTIME_PRIORITY_CLASS processes.  
THREAD_PRIORITY_LOWEST Indicates 2 points below normal priority for the priority class.  
THREAD_PRIORITY_NORMAL Indicates normal priority for the priority class.  
THREAD_PRIORITY_TIME_CRITICAL  
 
 
nStackSize
--------------
spécifie la taille de la pile (en octets) du thared.
Tu laisses la valeur par défaut = 0 -> même taille que le processus qui créé ce thread
 
 
 
dwCreateFlags:
--------------
 
Flag pour le status du thread. 2 valeurs possibles:  
 
CREATE_SUSPENDED : le thread est créé à l'état suspendu. Il faudra ensuite le lancer...
0                : le thread est démarré immédiatement apres sa création
 
dans le doute, tu laisses la valeur par défaut.
 
 
et puis pour le reste tu laisses les valeurs par défaut.
Et puis si c pas clair, et ben précises un peu ce que tu ne comprends pas.

Reply

Marsh Posté le 28-02-2001 à 10:31:22    

merci gars , c juste ce dont je revait

Reply

Marsh Posté le 28-02-2001 à 11:59:27    

sinon moi je fais _beginthread(myThread,stack_size,pParam);
 
avec
myThread pointeur de fonction
 
stack_size
cf SoWhatIn22
 
pParam
cf SoWhatIn22


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 28-02-2001 à 13:18:38    

merci je note mais la ca marche avec AfxBeginThread  donc je touche pu :=)
enfin je note quand meme , ca peut toujour servir
merci encore

Reply

Marsh Posté le 28-02-2001 à 13:23:40    

_beginthread, à mon avis quand même c mieux, parce que c indépendant des MFC.
Ca fait partie de l'API win32, et donc c utilisables avec plus de compilos...
Les MFC c peut etre bien, mais moins j'en utilise, mieux je me porte :)

Reply

Marsh Posté le 28-02-2001 à 17:04:39    

oki je vais essayer avec beginthread alors , je ete fais confience , enfin les mfc c bien pratique quand meme (a mon gout )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed