IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[question bete] qu'est-ce qu'un handle?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv� Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Artisant logiciel
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par d�faut [question bete] qu'est-ce qu'un handle?
    voila, j'ai lut la FAQ, et la seule occurence que je trouve est :

    Qu'est-ce qu'un handle sur un objet ? une r�f�rence ? un pointeur ? un pointeur sur un pointeur ?
    http://c.developpez.com/faq/cpp/?pag...FERENCE_handle

    alors voila, moi a chaque fois que je lisait handle, je me disait "fonction qui s'execute en parallele"

    est-ce parcequ'elle s'execute apartir d'un pointeur?

    et je rajouterait : comment cr�er un handle?

    dsl, si c'est vraiment une question con...

  2. #2
    Membre �clair� Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par d�faut
    Je dirais plutot qu'un handle est une sorte d'indice qui permet de r�f�rencer une structure.

    Par exemple j'ai un tableau qui contient une liste de structures. Chaques structures cr�er aura un id attribu�. On vas appeler cet id un handle (poign�e). Par contre tu n'aura jamais acces � ce tableau, seule les fonctions g�rant cette structures y auront acc�s. Ainsi si on consid�re que cachune de ces fonction est une porte, tu doit lui donner ton handle pour l'ouvrir... Je sait c'est assez imager mais bon...

    Par contre l'int�ret d'un handle en C++ me parais vachement limit�... C'est plutot un truc C.

  3. #3
    Membre extr�mement actif

    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par d�faut
    bonjour,

    Un handle est une poign�e. Une sorte de r�f�rence sur un objet a partir duquel tu pourras manipuler cet objet ( appel de fonction).

    On ne cr�e pas vraiment de handle en g�n�ral se sont des fonctions qui en renvoient un. ( voir les fonctions de l'API windows)

  4. #4
    Membre �prouv� Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Artisant logiciel
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par d�faut
    soit j'ai vraiment trop delacunes, soit j'ai mal pos� ma question :

    d'apres la faq que j'ai lut, je coprend la notion de poign�e (certes, encore mieux grave a vos explications pertinentes, mici beaucoup )

    mais je n'arrive pas a faire le parallele avec les fonctions, en effet, j'ai toujours cru qu'un handle (croyance fausse, je m'en susi rendu compte) etait une fonction execut�e en parallele du traitement principal, afin de...

    et la je me stoppe, j'ai confondu avec thread...

    dsl...
    je laisse le texte dessus (bien qu'il soit inutil...)

    donc, je re-fait ma question : comment fait on pour lancer un thread?

    ce que je sait : c'est un bout de code lanc� en parallele.
    ce que je croit savoir : il partage la meme zone memoire, et a donc acces aux variables globales.
    ce que je ne sait pas :
    - la syntaxe pour le lancer
    - ... et plein d'autres choses

    j'ai regard� dans la faq c++, mais je n'ai rien trouv�

    j'(ai bien trouv� ce bout de code cens� lancer un thread, mais je ne le comprend pas :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    static DWORD WINAPI ThreadLauncher(void *p){
    	struct thread_param *Obj = reinterpret_cast<struct thread_param*>(p);               
    	serveur *s = Obj->ser;                          
    	return s->ClientThread(Obj->soc);       
    }
    source : http://khayyam.developpez.com/articl...threads/#LII-5(II-5. Les threads des clients )

    dsl de mes questions idiotes... j'essaie juste d'avoir une notion d'ensemble du c++ avant de me lancer dans un projet qui me semble complexe...

  5. #5
    Membre extr�mement actif

    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par d�faut
    Citation Envoy� par hansaplast
    soit j'ai vraiment trop delacunes, soit j'ai mal pos� ma question :

    d'apres la faq que j'ai lut, je coprend la notion de poign�e (certes, encore mieux grave a vos explications pertinentes, mici beaucoup )

    mais je n'arrive pas a faire le parallele avec les fonctions, en effet, j'ai toujours cru qu'un handle (croyance fausse, je m'en susi rendu compte) etait une fonction execut�e en parallele du traitement principal, afin de...

    et la je me stoppe, j'ai confondu avec thread...

    dsl...
    je laisse le texte dessus (bien qu'il soit inutil...)

    donc, je re-fait ma question : comment fait on pour lancer un thread?

    ce que je sait : c'est un bout de code lanc� en parallele.
    ce que je croit savoir : il partage la meme zone memoire, et a donc acces aux variables globales.
    ce que je ne sait pas :
    - la syntaxe pour le lancer
    - ... et plein d'autres choses

    j'ai regard� dans la faq c++, mais je n'ai rien trouv�

    j'(ai bien trouv� ce bout de code cens� lancer un thread, mais je ne le comprend pas :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    static DWORD WINAPI ThreadLauncher(void *p){
    	struct thread_param *Obj = reinterpret_cast<struct thread_param*>(p);               
    	serveur *s = Obj->ser;                          
    	return s->ClientThread(Obj->soc);       
    }
    source : http://khayyam.developpez.com/articl...threads/#LII-5(II-5. Les threads des clients )

    dsl de mes questions idiotes... j'essaie juste d'avoir une notion d'ensemble du c++ avant de me lancer dans un projet qui me semble complexe...
    Pour lancer un thread sous windows tu peux utiliser la fonction CreateThread ( pour les param�tres je te renvoi � la documentation sur le site msdn).

    Le code que tu montres ressembles plus � la fonction que dois executer ton thread et surement pas � la cr�ation du thread en lui m�me.

    Qu'est que tu veux savoir d'autres ?

  6. #6
    Membre �prouv� Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Artisant logiciel
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par d�faut
    merci bcp de ta reponse.

    j'ai une derniere question : y'a t il une methode unifi�e (cad : multi OS) afin de lancer un thread?

    dans tous les cas, je fonce voir la odc de Wxwidgets qui le permet peut etre

    merci encore

  7. #7
    Membre extr�mement actif

    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par d�faut
    Citation Envoy� par hansaplast
    merci bcp de ta reponse.

    j'ai une derniere question : y'a t il une methode unifi�e (cad : multi OS) afin de lancer un thread?

    dans tous les cas, je fonce voir la odc de Wxwidgets qui le permet peut etre

    merci encore
    Pas � ma connaissance.

  8. #8
    Membre �prouv� Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Artisant logiciel
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par d�faut
    bon, merci pour tout, je n'ai rien trouv� dans la doc, je met donc le sujet en resolut

    ps : peut etre serait il bien de rajouter la notion de thread dans la faq, et de preciser qu'il existe un appel different par OS

  9. #9
    Membre extr�mement actif

    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par d�faut
    Citation Envoy� par hansaplast
    bon, merci pour tout, je n'ai rien trouv� dans la doc, je met donc le sujet en resolut

    ps : peut etre serait il bien de rajouter la notion de thread dans la faq, et de preciser qu'il existe un appel different par OS
    Tu as regard� du c�t� de boost ? Je ne connais pas trop mais peut �tre qu'il g�re les threads d'une fa�on portable, je ne sais pas.

  10. #10
    R�dacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de syst�me d�information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Architecte de syst�me d�information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par d�faut
    Citation Envoy� par hansaplast
    j'(ai bien trouv� ce bout de code cens� lancer un thread, mais je ne le comprend pas :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    static DWORD WINAPI ThreadLauncher(void *p){
    	struct thread_param *Obj = reinterpret_cast<struct thread_param*>(p);               
    	serveur *s = Obj->ser;                          
    	return s->ClientThread(Obj->soc);       
    }
    source : http://khayyam.developpez.com/articl...threads/#LII-5(II-5. Les threads des clients )
    ce code est celui de la fonction invoquee par le CreateThread appele plus haut dans mon code. C'est donc la fonction qui sera dans le thread, celle qui sera executee en parallele.

    voila la creation du thread en tant qu'objet systeme:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    hProcessThread = CreateThread(NULL, 0,&serveur::ThreadLauncher, &p,0,NULL);
    J'avais juste utilise une fonction intermediaire (mon ThreadLauncher) pour pallier des problemes de fonctions membres expliques dans la faq.

    Citation Envoy� par hansaplast
    y'a t il une methode unifi�e (cad : multi OS) afin de lancer un thread?
    pas a ma connaissance, mais on peut ruser et avoir un code avec des threads portable, en utilisant des bibliotheques qui ont reimplemente la notion de thread. suivez mon regard ... QT avec ses QThreads, fox toolkit et ses FXThreads , SDL et ses SDL_Threads ...

  11. #11
    Membre �prouv� Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Artisant logiciel
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par d�faut
    @ tous les deux : merci encore

    SDL et ses SDL_Threads ...
    je vait aller voir SDL_Threads car j'ai besoin d'une biblio graphique dans mon projet (et du coup, je sait que choisir entre allegro et SDL)

    voila, d'une pierre deux coups

    juste pour info :
    boost : http://www.boost.org/doc/html/threads.html

    SDL : http://www.libsdl.org/intro.fr/usingthreadsfr.html

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 31/08/2009, 11h39
  2. [Question] Qu'est-ce qu'un Handle ?
    Par QAYS dans le forum Delphi
    R�ponses: 4
    Dernier message: 18/04/2007, 12h26
  3. [FOREIGN KEY] petite question bete ...
    Par dzincou dans le forum PostgreSQL
    R�ponses: 5
    Dernier message: 13/01/2004, 16h35
  4. R�ponses: 5
    Dernier message: 25/11/2003, 10h02
  5. question bete
    Par hervecourtat dans le forum ASP
    R�ponses: 8
    Dernier message: 07/11/2003, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo