| threads | |
|
|
Auteur | Message |
---|
le_duche
![le_duche](https://2img.net/u/1612/42/45/74/avatars/5-56.jpg)
Nombre de messages : 60 Age : 39 Localisation : Bruxelles Date d'inscription : 07/12/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: threads Mar 7 Fév à 3:05 | |
| Voilà je voudrais savoir quand est-ce qu'il est utile d'utiliser les threads ? en gros quoi ! | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
Sn00bino Invité
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Mar 7 Fév à 9:32 | |
| Lu,
Je profite du topic parceque les threads ne fonctionne pas chez moi : J' ai executer le prog et: Appuyer sur une toucher pour continuer Pas de 1 ni de 2.
++ |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
FVIRTMAN Admin
![FVIRTMAN](https://2img.net/u/1612/42/45/74/avatars/1-95.jpg)
Nombre de messages : 78 Date d'inscription : 11/11/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Mar 7 Fév à 16:24 | |
| Sn00bino > Bizarre ! Je viens de le retester, il fonctionne chez moi (sans modification) Quel compilateur utilises tu ? Pour ma part, je suis sous Visual C++. Mais normalement ça devrait marcher. Essaie de rajouter un second "system("pause") "apres le premier, est ce qu'il te demande toujours d'appuyer ? 2 fois ? ne vois tu toujours pas de 1 et 2 ?
le_duche > Les threads sont souvent utilisés pour surveiller quelque chose qui peut intervenir n'importe quand, sans etre bloqué : - par exemple, tu as un thread qui reste en écoute sur un "cin" pendant que l'autre calcule quelque chose d'autre. - en réseau, tu un un thread qui surveille les arrivées réseau et les push dans une liste - enfin, SDL utilise un thread pour les evenements : un sous programme qui surveille en permanence le clavier, la souris, etc... Quand un evenement arrive, il le met dans une liste. Cette liste, tu la récupere dans le thread principal avec "SDL_pollEvent" | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
le_duche
![le_duche](https://2img.net/u/1612/42/45/74/avatars/5-56.jpg)
Nombre de messages : 60 Age : 39 Localisation : Bruxelles Date d'inscription : 07/12/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Mer 8 Fév à 2:19 | |
| Ok ! Merci ![cheers](https://2img.net/i/fa/i/smiles/icon_cheers.png) | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
sn00bino
Nombre de messages : 12 Date d'inscription : 08/01/2006
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Mer 8 Fév à 4:24 | |
| Sa marche pas mais : #include <windows.h> #include <stdio.h> #include <conio.h>
// Procédure utilisée par le thread DWORD WINAPI ThreadProc(LPVOID lpParam) { while(1) { cout << "Les threads c 'est bo " << endl; } }
DWORD WINAPI Thread2(LPVOID lpParam) { while(1) { cout << "en effet" << endl; } return 0; }
int main(int argc, char* argv[]) { DWORD ThreadId; HANDLE h1; HANDLE h2; h1 = CreateThread(NULL,NULL,ThreadProc,NULL,NULL,&ThreadId); h2 = CreateThread(NULL,NULL,Thread2,NULL,NULL,&ThreadId); Sleep(2000); SuspendThread(h1); getch(); ResumeThread(h1); systeme("PAUSE"); return 0; }
sa sa marche | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
sn00bino
Nombre de messages : 12 Date d'inscription : 08/01/2006
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Mer 8 Fév à 8:21 | |
| J' ai vu sa:
DWORD WINAPI ThreadProc(LPVOID lpParam)
tu dis que c 'est un pointeur qui fait passer des parametres.
Mais je vois pas comment passer des paametres avec un pointeurs ni meme quel parametre ces et a quoi sa sert.
+ Merci d' avance | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
le_duche
![le_duche](https://2img.net/u/1612/42/45/74/avatars/5-56.jpg)
Nombre de messages : 60 Age : 39 Localisation : Bruxelles Date d'inscription : 07/12/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Sam 11 Fév à 5:17 | |
| LPVOID me semble être l'équivalent de void*
J'ai d'ailleur une question à ce sujet: Quand je fais une fonction qui demande une variable void* comme paramètre, je sais que ca veut dire que je peux lui envoyer n'importe quel type pointé, mais j'ai cru comprendre que je dois gérer moi-meme la structure et la dimention du truc que j'envoie.
Par exemple, si je lui envoie un tableau de variables Vecteur* en paramètre, si je fais tableau[1], je me doute bien que je n'aurai pas mon deuxième élément, mais le deuxième octet du vecteur non ? Comment je fais pour savoir où se situe le n-ème élément ? est-ce que ceci suffit: tableau[n*sizeof(Vecteur)] ? Sinon, qu'est ce que je dois utiliser ? est ce que je peux faire une reconversion ? Par exemple, si j'ai une fonction void MaFonction(void* ptr) { Vecteur* _ptr = (Vecteur*)ptr; //... } est-ce que c'est bon aussi ?
'fin voilà j'espère que vous comprendrez ma question... | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
FVIRTMAN Admin
![FVIRTMAN](https://2img.net/u/1612/42/45/74/avatars/1-95.jpg)
Nombre de messages : 78 Date d'inscription : 11/11/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Dim 12 Fév à 17:16 | |
| Oui, c'est exactement ça ![Smile](https://2img.net/i/fa/i/smiles/icon_smile.gif) Le LPVOID veut dire "LONG POINTER VOID" = void* (le LONG associé au pointeurs est obsolete : c'était l'époque des pointeurs near et far, ce qu'il faut retenir est que LP veut dire que c'est un ponteur) Pour le passage en void*, c'est une valeur libre, Tu envoies juste une adresse pure. Pas la peine de s'embeter a gérer des tailles et autres, il suffit de caster comme tu disais : exemple : - Code:
-
// code appelant : { Ma_struct S; // une structure de ton choix // remplissage de S fonc((void*)&S); }
void fonc(void* v) { Ma_struct* pS = (Ma_struct*)v; // tu accedes ensuite comme tu le veux a ta structure !
pS->champ1 = 3; // par exemple...
}
Le void* est le "template" du C, on va dire ![Smile](https://2img.net/i/fa/i/smiles/icon_smile.gif) | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
le_duche
![le_duche](https://2img.net/u/1612/42/45/74/avatars/5-56.jpg)
Nombre de messages : 60 Age : 39 Localisation : Bruxelles Date d'inscription : 07/12/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Lun 13 Fév à 1:16 | |
| Ok merci ! Je vais pouvoir commencer ma gestion de la souris et du clavier en thread... ![Very Happy](https://2img.net/i/fa/i/smiles/icon_biggrin.png) | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
sn00bino
Nombre de messages : 12 Date d'inscription : 08/01/2006
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Lun 13 Fév à 10:49 | |
| Fvirtman -> Je suis sous DevC et quand je met 2 system("PAUSE") yen a bien 2 qui s' affiche Voila j' ai réalisé une classe pour la gestion des threads: - Code:
-
//fichier .h #include <windows.h>
class Thread { private: /*****Donné*****/ HANDLE hThread; DWORD ThreadId; /***************/ public: /*****Constructeur*****/ Thread(); /******Creer*le*Thread******/ void Launcher(); /*****Procédure*utilisé*par*le*Thread*/ void ThreadProc(LPVOID *lpParam); /*****Fonction*static**lancant*le*thread**/ static DWORD WINAPI BeginThread(LPVOID lpParam);
};
//fichier .cpp
#include "Thread.h" #include <iostream.h>
/*Constructeur*/ Thread::Thread() { /*Remplissage*des*donées*/ hThread = NULL; ThreadId = NULL; /*appel de la focntion de Creation du thread*/ Launcher(); } /*Creation du Thread*/ void Thread::Launcher() { hThread = ::CreateThread(NULL,NULL,BeginThread,(LPVOID *)this,NULL,&this->ThreadId); } /*Lancage*du*Thread*/ DWORD WINAPI Thread::BeginThread(LPVOID lpParam) { /*fonction qui doit etre static pour des raison mysterieuse*/ Thread *thisThread; thisThread = (Thread *)lpParam; /*Appele de ThreadProc*/ thisThread->ThreadProc((LPVOID*)thisThread); } /*Procédure du Thread*/ void Thread::ThreadProc(LPVOID* lpParam) { while(1) { Thread* thread = (Thread *) lpParam; cout << thread->ThreadId << endl << thread->hThread << endl;
} }
//fichier main
int main(int argc, char *argv[]) { /*Creation d' un objet T de type Thread*/ Thread T; /*attend qu' on appuie sur une touche*/ system("PAUSE"); return EXIT_SUCCESS;
}
/*Quel belle presentation !*/
Et donc : Le probleme c 'est que les 2 choses ne se passe pas en meme temps ya d' abord le system("PAUSE") qui s' affiche puis le reste et non pas les 2 en meme temps. Comment cela ce fait il ? Merci d' avance, ++ | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
FVIRTMAN Admin
![FVIRTMAN](https://2img.net/u/1612/42/45/74/avatars/1-95.jpg)
Nombre de messages : 78 Date d'inscription : 11/11/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Lun 20 Fév à 15:05 | |
| tu dis que ça t'affiche le system pause, puis ensuite tout ce que fait le thread ? quand le system("pause") s'affiche, c'est gelé, ou ça continue quand meme ?
Car si ça continue :c'est normal : le thread esty lancé, et le thread principal, lui, va immédiatement se bloquer sur le system("pause") | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
sn00bino
Nombre de messages : 12 Date d'inscription : 08/01/2006
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Jeu 23 Fév à 4:58 | |
| Non la est le probleme sa ne continue pas. | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
FVIRTMAN Admin
![FVIRTMAN](https://2img.net/u/1612/42/45/74/avatars/1-95.jpg)
Nombre de messages : 78 Date d'inscription : 11/11/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Lun 27 Fév à 4:17 | |
| c'est tres bizarre. J'ai testé sosu Visual C++ 6.0 et ça fonctionne... Peut etre est ce une particularité de Dev ? Si quelqu'un a dev sur sa machine, peut il nous dire si l'exemple sur les threads (chapitre K) fonctionne ? | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
countag
Nombre de messages : 57 Date d'inscription : 10/02/2006
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Lun 27 Fév à 4:39 | |
| j ai tester :
L.1. Utilisation de threads (windows.h, CreateThread...)
celui la, sous dev ca marche nikel, par contre le K c est pour le son je pense que tu as du te trompez de lettre et j ai pas installer FMOD | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
FVIRTMAN Admin
![FVIRTMAN](https://2img.net/u/1612/42/45/74/avatars/1-95.jpg)
Nombre de messages : 78 Date d'inscription : 11/11/2005
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Mar 28 Fév à 3:08 | |
| ouais, c'était L ![Smile](https://2img.net/i/fa/i/smiles/icon_smile.gif) | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
countag
Nombre de messages : 57 Date d'inscription : 10/02/2006
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads Mar 28 Fév à 12:53 | |
| je te conseil de telecharger la derniere version de DEV C++, ca j ai un ami ou certain code marche pas car ca version etait ancienne et avec la nouvelle ca marche impec ![Smile](https://2img.net/i/fa/i/smiles/icon_smile.gif) | |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
Contenu sponsorisé
![threads Empty](https://2img.net/i/empty.gif) | Sujet: Re: threads ![threads Empty](https://2img.net/i/empty.gif) | |
| |
|
![Aller en bas](https://2img.net/i/empty.gif) | |
| threads | |
|