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

Threads & Processus C++ Discussion :

thread et objet


Sujet :

Threads & Processus C++

  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut thread et objet
    Bonjour,

    J'aurais voulu savoir si on peut creer une thread avec en parametre une méthode?
    du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class MaClass
    {
    public:
        Ouverture ( void );//lance la thread
        Fermeture ( void );//termine la thread
    private:
        Thread ( void );
    }
    Merci d'avance

  2. #2
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    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 : 950
    Par défaut
    je ne connait les thread que sous wxwidgets.

    mais sous WX, donc, ton thread est en fait une classe que tu derive.

    donc, ma reponse est oui

  3. #3
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut
    En fait, je m'excuse, j'ai pas été assez précis.

    Je suis sous visual embedded c++4. de plus, je ne connais pas les wxWidgets...

    Pour l'instant, j'ai le message suivant:
    "cannot convert from '' to 'unsigned long (__cdecl *)(void *)"

    Merci

  4. #4
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    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 : 950
    Par défaut
    un noob repond a un noob : quelle lib / api utilise tu pour crer tes threads?

    ps : met un extrait de ton code, ca aidera

  5. #5
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut
    Bonjour,

    c quoi un noob?

    sinon, voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    bool MaClass::OuvertureCom( void )
    {
        //initialisation d'un périphérique
        CreateThread(NULL, 0,(DWORD ( __stdcall*)(void *))CommunicationEOBD::ThreadProc,(void*) this, 0,0);
        return true;
    }
     
    DWORD WINAPI MaClass::ThreadProc( LPVOID lpParameter )
    {
         int i;
         i++; //code sans effet, car je sais même pas si j'arriverais a faire comme je veux.
    }
    je suis sous visual embedded c++ V4.0.
    il y a aussi stdafx qui est la (et j'ai jamais compris a quoi ca sert!)

    merci

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651

  7. #7
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    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 : 950
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class noob : public newbee 
    {
       public :
       void apprendre()
       void questions()
    //a implementer : aider les autres
    }
    en gros un noob, c'est donc un newbee (francisation du terme?)

    => nouvelle abeille?
    => ne connait pas encore la ruche et ses regles et est donc paumé

  8. #8
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut
    heuuu

    ben sans faire exprès, j'ai trouvé une autre piste:
    http://c.developpez.com/faq/vc/?page...keWorkerThread

    c'est aussi dans la FAQ...


    excusez moi...

  9. #9
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    950
    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 : 950
    Par défaut
    Citation Envoyé par zenetcalme
    sans faire exprès
    lol, j'adore les recherches "sans faire expres ^^

  10. #10
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 136
    Par défaut
    en fait, j'ai chercher autre chose dans l'aide de vc, puis dans les faq, et hop, je suis tombé dessus!
    me suis pas fait mal, ouf!

    sinon, avec cette méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AfxBeginThread(ThreadProc, this);
    ben en fait, j'ai plus accés a mes attributs...
    apparement, je doit lui passer un pointeur sur l'instance de la classe?
    est ce que ce serais a cause du fait que c'est une méthode static:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static UINT ThreadProc ( LPVOID lpParameter );

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Bonjour,

    perso j'utilise ce code en embedded c++

    =======
    DWORD WINAPI ReceptionThread(LPVOID p);

    HANDLE hThread;
    HANDLE hStopEvent;
    unsigned short int newFreq;
    unsigned short int* pInputsFreq; //Pointeur de mappage de la mémoire d'entree sortie



    void MyApplication::Start_Thread()
    {

    hStopEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
    hThread = CreateThread(NULL,0,ReceptionThread,(LPVOID) hStopEvent,0,NULL);
    CString tot = _T("Creation echec du thread");
    if(NULL==hThread) parent->MessageBox(tot); else SetThreadPriority(hThread,0);
    }


    DWORD WINAPI ReceptionThread(LPVOID p)
    {
    HANDLE hStopEvent = (HANDLE) p;
    DWORD dwWait;
    BOOL fRun = TRUE;
    while(fRun)
    {
    dwWait = WaitForSingleObject(hStopEvent,50); // 50 ms
    switch(dwWait)
    {
    case WAIT_OBJECT_0:
    {
    // L'événement stop a été déclenché, sortir proprement du thread
    fRun = FALSE;
    }
    break;

    case WAIT_TIMEOUT:
    {
    // Chaque 50 ms secondes , effectuer le boulot suivant
    newFreq = *pInputsFreq;

    }
    break;
    }
    }
    return 0;
    }

    =======

    Manu


    Ahhh oui et ca aussi pour l'arret :

    if(NULL!=hThread){// stop Thread
    DWORD dwWait;
    SetEvent(hStopEvent);
    dwWait = WaitForSingleObject(hThread,0xFFFFFFFF);
    CloseHandle(hThread);
    }

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Que signifie le zéro passé à SetThreadPriority ?
    Cette fonction est censée recevoir une valeur de #define, pas un nombre "nu" comme ça...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Que signifie le zéro passé à SetThreadPriority ?
    Cette fonction est censée recevoir une valeur de #define, pas un nombre "nu" comme ça...
    Salut,

    C'est sensé placé le Thread en priorité la plus haute par rapport aux autres threads.

    Manu

  14. #14
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Visiblement, ce n'est pas ce que ça fait:
    Code winnt.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #define THREAD_BASE_PRIORITY_LOWRT  15  // value that gets a thread to LowRealtime-1
    #define THREAD_BASE_PRIORITY_MAX    2   // maximum thread base priority boost
    #define THREAD_BASE_PRIORITY_MIN    (-2)  // minimum thread base priority boost
    #define THREAD_BASE_PRIORITY_IDLE   (-15) // value that gets a thread to idle
    Code winbase.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #define THREAD_PRIORITY_LOWEST          THREAD_BASE_PRIORITY_MIN
    #define THREAD_PRIORITY_BELOW_NORMAL    (THREAD_PRIORITY_LOWEST+1)
    #define THREAD_PRIORITY_NORMAL          0
    #define THREAD_PRIORITY_HIGHEST         THREAD_BASE_PRIORITY_MAX
    #define THREAD_PRIORITY_ABOVE_NORMAL    (THREAD_PRIORITY_HIGHEST-1)
    #define THREAD_PRIORITY_ERROR_RETURN    (MAXLONG)
    
    #define THREAD_PRIORITY_TIME_CRITICAL   THREAD_BASE_PRIORITY_LOWRT
    #define THREAD_PRIORITY_IDLE            THREAD_BASE_PRIORITY_IDLE
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Oui, tu as tout a fait raison.


  16. #16
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    D'où l'intéret d'utiliser les defines au lieu d'un nombre magique comme cela...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Thread et objet
    Par joubiyann dans le forum SWT/JFace
    Réponses: 6
    Dernier message: 19/02/2009, 20h09
  2. Threads et objet this
    Par opensource dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 21/04/2008, 14h30
  3. Serialisation, thread et objet modifiable
    Par yozart dans le forum Concurrence et multi-thread
    Réponses: 10
    Dernier message: 25/05/2007, 10h26
  4. [Thread] Modifier objet static depuis thread
    Par orelero dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 19/04/2006, 17h09

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