Virtual FMAN forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Virtual FMAN forum

Virtual FMAN forum
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-50%
Le deal à ne pas rater :
WiMiUS S27 – Mini projecteur portable rotatif à 270° Full HD 9000 ...
69.99 € 139.99 €
Voir le deal

 

 threads

Aller en bas 
4 participants
AuteurMessage
le_duche

le_duche


Nombre de messages : 60
Age : 39
Localisation : Bruxelles
Date d'inscription : 07/12/2005

threads Empty
MessageSujet: threads   threads EmptyMar 7 Fév à 3:05

Voilà je voudrais savoir quand est-ce qu'il est utile d'utiliser les threads ? en gros quoi !
Revenir en haut Aller en bas
Sn00bino
Invité




threads Empty
MessageSujet: Re: threads   threads EmptyMar 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.

++
Revenir en haut Aller en bas
FVIRTMAN
Admin
FVIRTMAN


Nombre de messages : 78
Date d'inscription : 11/11/2005

threads Empty
MessageSujet: Re: threads   threads EmptyMar 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"
Revenir en haut Aller en bas
http://perso.numericable.fr/fvirtman
le_duche

le_duche


Nombre de messages : 60
Age : 39
Localisation : Bruxelles
Date d'inscription : 07/12/2005

threads Empty
MessageSujet: Re: threads   threads EmptyMer 8 Fév à 2:19

Ok ! Merci cheers
Revenir en haut Aller en bas
sn00bino




Nombre de messages : 12
Date d'inscription : 08/01/2006

threads Empty
MessageSujet: Re: threads   threads EmptyMer 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
Revenir en haut Aller en bas
sn00bino




Nombre de messages : 12
Date d'inscription : 08/01/2006

threads Empty
MessageSujet: Re: threads   threads EmptyMer 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
Revenir en haut Aller en bas
le_duche

le_duche


Nombre de messages : 60
Age : 39
Localisation : Bruxelles
Date d'inscription : 07/12/2005

threads Empty
MessageSujet: Re: threads   threads EmptySam 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...
Revenir en haut Aller en bas
FVIRTMAN
Admin
FVIRTMAN


Nombre de messages : 78
Date d'inscription : 11/11/2005

threads Empty
MessageSujet: Re: threads   threads EmptyDim 12 Fév à 17:16

Oui, c'est exactement ça Smile

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
Revenir en haut Aller en bas
http://perso.numericable.fr/fvirtman
le_duche

le_duche


Nombre de messages : 60
Age : 39
Localisation : Bruxelles
Date d'inscription : 07/12/2005

threads Empty
MessageSujet: Re: threads   threads EmptyLun 13 Fév à 1:16

Ok merci !
Je vais pouvoir commencer ma gestion de la souris et du clavier en thread... Very Happy
Revenir en haut Aller en bas
sn00bino




Nombre de messages : 12
Date d'inscription : 08/01/2006

threads Empty
MessageSujet: Re: threads   threads EmptyLun 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,

++
Revenir en haut Aller en bas
FVIRTMAN
Admin
FVIRTMAN


Nombre de messages : 78
Date d'inscription : 11/11/2005

threads Empty
MessageSujet: Re: threads   threads EmptyLun 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")
Revenir en haut Aller en bas
http://perso.numericable.fr/fvirtman
sn00bino




Nombre de messages : 12
Date d'inscription : 08/01/2006

threads Empty
MessageSujet: Re: threads   threads EmptyJeu 23 Fév à 4:58

Non la est le probleme sa ne continue pas.
Revenir en haut Aller en bas
FVIRTMAN
Admin
FVIRTMAN


Nombre de messages : 78
Date d'inscription : 11/11/2005

threads Empty
MessageSujet: Re: threads   threads EmptyLun 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 ?
Revenir en haut Aller en bas
http://perso.numericable.fr/fvirtman
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

threads Empty
MessageSujet: Re: threads   threads EmptyLun 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
Revenir en haut Aller en bas
FVIRTMAN
Admin
FVIRTMAN


Nombre de messages : 78
Date d'inscription : 11/11/2005

threads Empty
MessageSujet: Re: threads   threads EmptyMar 28 Fév à 3:08

ouais, c'était L Smile
Revenir en haut Aller en bas
http://perso.numericable.fr/fvirtman
countag




Nombre de messages : 57
Date d'inscription : 10/02/2006

threads Empty
MessageSujet: Re: threads   threads EmptyMar 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
Revenir en haut Aller en bas
Contenu sponsorisé





threads Empty
MessageSujet: Re: threads   threads Empty

Revenir en haut Aller en bas
 
threads
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Virtual FMAN forum :: Tutorial C++ :: Debutants en C++-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser