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 :

Les Threads... J'en remet une couche :)


Sujet :

C++

  1. #1
    Membre averti 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
    Points : 412
    Points
    412
    Par défaut Les Threads... J'en remet une couche :)
    Bon... J'ai vraiment des souci avec les threads dans mon programme...

    Pour créer une thread j'utilise la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)startRoutine, _params, 0, threadId);
    Qui à l'aire de fonctionné correctement si ce n'est qu'elle plante inlassablement lorsque je l'appel et que j'ai déja une thread en route dans mon programme.
    Engros si je faire :
    Création de thread 1 ... OK
    Création de thread 2 ... Segfault

    Création de thread 1 ... OK
    Fermeture de thread1 ... OK
    Création de thread 2 ... OK
    Fermeture de thread2 ... OK
    etc...

    Dr. Mingw me ressort ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    kiriliam_server.exe caused an Access Violation at location 7c8107c6 in module kernel32.dll Writing to location e9746365.
     
    Registers:
    eax=e9746365 ebx=00000000 ecx=00000b0c edx=7c91eb94 esi=ffffffff edi=00000001
    eip=7c8107c6 esp=0022f928 ebp=0022fd54 iopl=0         nv up ei ng nz na po nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000286
     
    Call stack:
    7C8107C6  kernel32.dll:7C8107C6  CreateRemoteThread
    7C81084D  kernel32.dll:7C81084D  CreateThread
    004058B6  kiriliam_server.exe:004058B6  Thread::Start(void*)  thread.cpp:53
                    LogWriter::Echo("Thread : param=%p\n", _params);
    	...
    >	thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)startRoutine, _params, 0, threadId);
    	LogWriter::Echo("Thread : param=%p\n", _params);
    	...
    Je suis completement paumé la :/

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Utiliser CreateThread n'est sans doute pas la meilleur idée pour créer un Thread sous Windows en C/C++... mais sans plus de code difficile d'en dire plus...

    Note: _beginthread et _beginthreadex sont plus appropriés que CreateThread pour un programme C.

  3. #3
    Membre averti 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
    Points : 412
    Points
    412
    Par défaut
    Je ne connaissais que cette méthode :/

    Je vais essayer ce que tu me dit

    PS : Ahhhhh lueur d'espoir quand tu nous tient

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par Higestromm
    Je ne connaissais que cette méthode :/

    Je vais essayer ce que tu me dit

    PS : Ahhhhh lueur d'espoir quand tu nous tient
    je doute que ce soit cela.... mais c'est possible
    (gestion de errno par exemple)

    mais sans plus de code, il est impossible d'en dire plus...

  5. #5
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    il éxiste aussi AfxBeginThread()

  6. #6
    Membre averti 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
    Points : 412
    Points
    412
    Par défaut
    Bon bah probleme résolu

    Merci Gandalf tu m'as sauvé la vie ! (On se croirais presque en route pour le mordor LOL) En changeant de méthode tout marche Nikel

    il éxiste aussi AfxBeginThread()
    Je n'utilise pas Visual C++ donc je ne pense pas pouvoir utilisé cette fonction. Enfin d'apres mes souvenir tout ce qui commence par AFX est lié aux MFC ou a des etètes précomilés d'origine douteuses

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

Discussions similaires

  1. Les Threads en cours dans une JVM
    Par aelmalki dans le forum Général Java
    Réponses: 3
    Dernier message: 21/07/2010, 11h41
  2. Zoomer sur les données d'une couche
    Par Unusual dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 02/09/2009, 17h23
  3. Conseil sur les thread dans une dll
    Par ksoft dans le forum C
    Réponses: 2
    Dernier message: 30/03/2009, 15h12
  4. Comment attendre que tous les thread lancés soient morts pour lancer une action.
    Par rgesnot dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 31/03/2007, 20h27
  5. Realisation d'une pause avec les thread
    Par toitoine01 dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 10/05/2006, 08h51

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