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 :

erreur de segmentation avec des threads


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Par défaut erreur de segmentation avec des threads
    j ai écris un programme qui crée 2 thread. Le premier thread multiplie la première moitié du tableau par 2 et l' autre moitié par le deuxième thread.Quand j exécute mon code j ai une erreur segmentation.Help me
    voici mon code source c e .
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>
     
    static int tab[10];
    struct borne { 
                int debut;
    	    int fin;
    	               };
    //fonction excecuter par les deux thread 
    void *multiplication (void * param) {
        struct borne *b;
        bb=(struct borne*) param;
        int i;
        int n=0;
        n=tab[i];
        for (i=b->debut;i<=b->fin;i++){
            tab[i]=2*tab[i];
            printf ("le resultat de la multiplication est %d,tab[i]");
        }
     
    }
     
    main (int ac, char **av)
    {
     
        struct borne *bb;
        struct borne *bb1;
     
        bb = malloc(sizeof (struct borne));
        bb1 = malloc(sizeof(struct borne));
     
     
        bb->debut = 0;
        bb->fin = 4;
        bb1->debut = 5;
        bb1->fin = 9;
     
        //declaration des threads
        pthread_t t1, t2;
        void *attente;
        //initilaisation du verrou
        //pthread_mutex_init (&verrou, NULL);
     
     
        //creation du thread 1
        if (pthread_create (&t1, NULL, multiplication,(void *) bb) < 0) {
            fprintf (stderr, "erreur lors de la creation du thread 1\n");
            exit (1);
        }
     
        //creation du thread 2
        if (pthread_create (&t2, NULL, multiplication, (void *) bb1) < 0) {
            fprintf (stderr, "erreur lors de la creation du thread 2\n");
            exit (1);
        }
     
        //attente de la fin du thread 1
        (void)pthread_join (t1, &attente);
        //attente de la fin du thread 2
        (void)pthread_join (t2, &attente);
    }

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 292
    Par défaut
    i et b sont utilisés avant d'être définis. N'est-ce pas ?
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i=b->debut;i<=b->fin;i++){
    D'ailleurs, tab, on ne sait même pas ce que c'est.

    Et puis écrire n = tab[i] puis n=0 ou l'inverse, c'est idiot.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    149
    Par défaut
    Il manque les free, par rapport aux malloc.
    Pour moi, le programme ne compilait pas à caude de "bb" dans la fonction des threads. "n" ne semble pas très utile.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 15
    Dernier message: 31/05/2013, 15h57
  2. Faire un sleep non blockant avec des threads
    Par mobscene dans le forum Langage
    Réponses: 7
    Dernier message: 15/12/2006, 19h31
  3. [Threads] Actions continues avec des threads
    Par MiJack dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 10/10/2005, 17h32
  4. Erreur sur IIS avec des cripts ASP
    Par Alin dans le forum ASP
    Réponses: 7
    Dernier message: 22/06/2004, 14h15

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