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

Linux Discussion :

Problème de threads avec pthread_create


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 44
    Points : 23
    Points
    23
    Par défaut Problème de threads avec pthread_create
    Salut !
    j'ai un programme qui plante lorsqu'il arrive sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pthread_create ( &threadId[_threadCounter], NULL, my_thread_process, NULL )
    il me dit :" erreur de segmentation"
    je ne vois pas d'où vient l'erreur, ce plantage a lieu quand le programme reçoit un fichier d'un autre programme

    my_thread_process est déclaré en statique dans la classe, dois je répéter le mot clé "static" devant la définition de la fonction ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	while(1)
    	{
    		_newSocket = accept(_mySocketServer, (struct sockaddr *)&_sockInfoClient, (socklen_t*) &_sockInfoClientSize);
    		cout<<"accept ok, newSocket = "<<_newSocket<<endl ;
    		if &#40;_newSocket != -1&#41;
    		&#123;
     
    			if&#40;pthread_create &#40; &threadId&#91;_threadCounter&#93;, NULL, my_thread_process, NULL &#41; != 0&#41;
    			&#123;cout<< "erreur avec pthread_create "<<endl ;&#125; //le quatrième paramètre est l'argument passé à my_thread_process
    			_threadCounter++ ;
    					&#125;		
    	&#125;

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 44
    Points : 23
    Points
    23
    Par défaut
    personne n'a d'idées ?

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pthread_create &#40; &threadId&#91;_threadCounter&#93;, NULL, my_thread_process, NULL &#41;
    Si t'es sûr que c'est cette ligne qui provoque l'erreur alors la seule raison que je vois est que tu sors du tableau...

    Est-il bien alloué? Dépasses-tu la taille qu'il a?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 44
    Points : 23
    Points
    23
    Par défaut
    _threadCounter est initialisé a zéro dans le constructeur
    mais en supposant que c'est la boucle infinie qui provoque le dépassement, je ne comprend pas pourquoi le

    cout<<"accept ok, newSocket = "<<_newSocket<<endl ;

    ne s'affiche qu'une fois ?

    est ce que ça peut etre du a la configuration de linux ? (par un administrateur par exemple)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 44
    Points : 23
    Points
    23
    Par défaut
    ? :

  6. #6
    Membre régulier Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 110
    Points
    110
    Par défaut
    Salut

    D'une facon générale ce message ne s'affiche que lorsque tu oublie d'allouer de la mémoire pour une variable. essayez de voir la déclaration des tous les variables


    A+

    N’acceptez jamais la défaite, vous êtes peut-être à 2 doigts de la réussite.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 44
    Points : 23
    Points
    23
    Par défaut
    j'ai trouvé ! c'est parce que j'ai initialisé _newSocket à 0 dans le contructeur, du coup il rentre toujours dans le if...
    Merci pour votre aide

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

Discussions similaires

  1. [VB.net] Thread avec paramètres
    Par WriteLN dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/04/2005, 18h42
  2. thread avec wxworks
    Par moltes91 dans le forum wxWidgets
    Réponses: 12
    Dernier message: 08/04/2005, 15h56
  3. Thread avec C++
    Par pierrev1 dans le forum SDL
    Réponses: 3
    Dernier message: 18/03/2005, 14h59
  4. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 02h15
  5. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 13h01

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