| |||||
| Dernière réponse | |
|---|---|
| Sujet : Tutorial sur le multi-threading en Visual C++ | |
| wpk | Donc:
1. Le CWinThread, tu peux le laisser tomber pour le moment. 2. Les threads ont tous un "fil d'execution" c'est la procedure qui va etre execute. La fonction AfxBeginThread renseigne le scheduler du systeme et ensuite l'execute. En gros, le 1er param de AfxBeginThread, c'est la fonction qui va etre execute en "parallele" de ton prog principal. Pour que le systeme puisse appeler la fonction que tu passe en param a Afx..., tu dois respecter un certain canevas fixe par MS UINT thread (LPVOID param) UINT : la valeur de retour c'est pour eventuellement montrer qu'il y a eu une erreur LPVOID c'est un void *, tu peux mettre la dedans ce que tu veux comme donne, typiquement, tu y mets un pointeur vers un objet qui aggrege les params des fonctions deja ecrites. Supposons que t'as une fonction void download(char* arg1, int arg2, CString arg3) et que c'est cette fonction que tu veux executer ds un thread. Et bien au lieu de modifier son interface, tu cree une 2eme fonction UINT thread1(LPVOID ptr) { CObjArgs *oa=(CObjArgs *)ptr; /*CObjArgs contient le arg1, arg2, arg3 (tu peux mettre une struct si ca te plait mieux*/ return download(oa->getArg1(),oa->getArg2(),oa->getArg3()); } |
| Vue Rapide de la discussion |
|---|