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 :

Problème librairie pthread


Sujet :

Threads & Processus C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 62
    Points
    62
    Par défaut Problème librairie pthread
    Bonjour à tous !
    Je développe un serveur multi-thread qui permet de communiquer avec des clients.
    Je cherche à enregistrer les socket client dans un tableau de thread pour ensuite traité chaque clients indépendamment.
    Donc j'ai une erreur mais je ne comprend pas vraiment pourquoi ...

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    attributs:
    pthread_t TabThread[NB_THREAD]; //NB_THREAD est une variable global
    ...(le blabla WSAStartup et le reste)
    ...
    NumThread =0;
    while(1)
             {
                TailleAdresseClient=sizeof(AdresseClient);
                fdClient=accept(MaSocket,(struct sockaddr*)&AdresseClient,&TailleAdresseClient);
                   if(fdClient<0)
                   {
                      exit(1);
                   }
                   NumThread =0;
     
                   while((TabThread[NumThread]!=NULL )&& (NumThread<NB_THREAD))
                   {
                      NumThread++;
                                  if(NumThread<NB_THREAD)
                                  {
                                  TabFdClient[NumThread]= fdClient;
                            pthread_create(TabThread+NumThread,NULL,&tServeur::GererClient,&NumThread);
                                  }
                                  return true;   
                }

    une erreur dans le while :

    no match for 'operator!=' in '((tServeur*)this)->tServeur::TabThread[((tServeur*)this)->tServeur::NumThread] != 0'

    Une erreur pthread_create:

    cannot convert `void*(tServeur::*)(void*)' to `void*(*)(void*)' for argument `3' to `int pthread_create(pthread_t*, pthread_attr_t_* const*, void*(*)(void*), void*)'

  2. #2
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    Pour la première erreur

    TabThread[NumThread] est de type pthread_t, et il n'y a aucune raison qu'il soit convertible en pointeur / en entier (il est même sûr que ce n'est pas le cas). Tu ne peux donc pas faire comme ça. Tu peux par exemple garder une liste des threads "non alloués" pour le moment, et aller piocher dedans quand tu as besoin d'un thread

    Pour la seconde erreur, le compilateur te dit explicitement le problème :
    &tServeur::GererClient n'est pas du type (void*)(*)(*void) mais du type (void*)(tServeur::*)(void*), ce qui implique entre autre que tu as besoin d'un tServeur pour l'utiliser.

    Une des solutions est probablement d'utiliser une API c++ pour manipuler les threads, genre boost::thread (et puis boost::bind dans la foulée). Sinon il te faut utiliser une fonction statique, ou encapsuler ta fonction membre dans une function classique, en lui passant el bon tServeur.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/04/2007, 10h28
  2. [Rico] Problème librairie RICO
    Par alexmorel dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 26/03/2007, 11h59
  3. problème librairie manquante
    Par youp_db dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 30/08/2006, 09h59
  4. Problème librairie.
    Par adicor dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/05/2006, 14h52
  5. Réponses: 5
    Dernier message: 07/04/2006, 14h02

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