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

POSIX C Discussion :

Probl�me d'interruption momentan�e de thread


Sujet :

POSIX C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    administrateur syst�mes
    Inscrit en
    F�vrier 2014
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : administrateur syst�mes
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : F�vrier 2014
    Messages : 2
    Par d�faut Probl�me d'interruption momentan�e de thread
    Bonjour,

    Mon programme devrait en faite lancer deux thread, l'un va incr�menter un compteur d�clar� comme variable global et attendre 1 seconde pendant que l'autre va afficher toutes les 2 secondes la valeur du compteur. Mon probl�me est que le programme affiche seulement le r�sultat � la fin et pas toutes les 2 secondes. En enlevant le sleep de la fonction charg�e d'afficher l� le r�sultat est affich� pendant que l'autre thread incr�mente. Merci de m'aider � r�soudre ceci.

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>
    #include <time.h>
    #include <unistd.h>
    #include <errno.h>
     
    pthread_mutex_t my_mutex = PTHREAD_MUTEX_INITIALIZER;
    int compt;
     
    void *compteur(void *nb)
    {
        int nombre = (int)nb;
     
        while(nombre != compt)
        {
            pthread_mutex_lock(&my_mutex);
            compt += 1;
            pthread_mutex_unlock(&my_mutex);
            sleep(1);
        }
        pthread_exit(0);
    }
     
    void *affichage(void *nb)
    {
        int nombre = (int)nb;
     
        while(nombre != compt)
        {
            pthread_mutex_lock(&my_mutex);
            printf("%d ", compt);
            pthread_mutex_unlock(&my_mutex);
            sleep(2);
        }
     
        pthread_exit(0);
    }
     
     
    int main(int argc, char* argv[])
    {
        int ret1, ret2;
        pthread_t thread1, thread2;
        compt = 0;
        int nombre = 5;
     
    //    sscanf(argv[1], "%d", &nombre);
     
        pthread_mutex_init (&my_mutex, NULL);
     
        ret1 = pthread_create(&thread1, NULL, compteur, (void*)nombre);
     
        if(ret1 !=0)
        {
            fprintf(stderr, "Erreur lors de la creation du thread 1");
            exit(1);
        }
     
        ret2 = pthread_create(&thread2, NULL, affichage, (void*)nombre);
     
        if(ret2 != 0)
        {
            fprintf(stderr, "Erreur lors de la creation du thread 2");
            exit(1);
        }
     
        pthread_join(thread1, NULL);
        pthread_join(thread2, NULL);
     
        return 0;
    }

  2. #2
    Mod�rateur

    Avatar de Bktero
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par d�faut
    Souvent, les sorties standards sont bufferis�es et attendent l'arriv�e du caract�re '\n' pour afficher la ligne en cours. Rajoute donc un '\n' dans ta fonction d'affichage.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    administrateur syst�mes
    Inscrit en
    F�vrier 2014
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : administrateur syst�mes
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : F�vrier 2014
    Messages : 2
    Par d�faut
    Merci beaucoup, c'�tait ca ! J'ai cherch� tellement longtemps pour ca ... J'ai aussi entre temps chang� le sleep par une fonction msleep qui a �t� conseill� dans le tuto thread POSIX de ce site.

  4. #4
    Mod�rateur

    Avatar de Bktero
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par d�faut
    Si ca peut te rassurer, tu te referas avoir dans le futur

    Clique sur le bouton en bas de la page si ton probl�me est r�gl�.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. probl�me d'affichage dans un thread
    Par innosang dans le forum POSIX
    R�ponses: 8
    Dernier message: 20/12/2006, 20h40
  2. Interruption d'un Thread
    Par doudblast dans le forum Concurrence et multi-thread
    R�ponses: 3
    Dernier message: 11/03/2006, 17h30
  3. R�ponses: 11
    Dernier message: 14/02/2006, 00h26
  4. [C#] - Probl�me sur fermeture d'un thread
    Par Erakis dans le forum Windows Forms
    R�ponses: 4
    Dernier message: 27/01/2006, 01h22
  5. [Thread][socket]Probl�me de fermeture d'un thread
    Par meda dans le forum Concurrence et multi-thread
    R�ponses: 4
    Dernier message: 04/11/2004, 01h03

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