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 :

pb de thread


Sujet :

Threads & Processus C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut pb de thread
    bonjour,

    Voila mon probleme :
    je crée deux threads et je voudrais que l'un puisse stopper l'autre avant la fin de son execution. Je m'explique :
    - thread 1 : for (int c=0; c < 10; ++c)
    - thread 2 : doit stopper le thread 1 quand c=5

    Avec mon code, le thread1 tourne jusqu'a son pthread_exit et après le thread2 demarre, maisnormalement 2threads devraient s'executer en "meme temps" donc je capte pas.

    Si quelqu'un sait comment faire, ca serait cool.

    voila mon code :
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include "pthread.h"
     
    void *f (void *arg);
    void *test (void *arg);
    int cpt=0;
    pthread_mutex_t mutex;
    pthread_t thread1, thread2;
     
    int main ()
    { pthread_mutex_init(&mutex, NULL);
      pthread_create(&thread1,NULL,f,(void *)"t1");
      pthread_create(&thread2,NULL,test,(void *)"t2");
      pthread_mutex_destroy(&mutex);
      return 0;  }
     
    void *f (void *arg)
    { bool encore=true;
      while (encore)
      { pthread_mutex_lock(&mutex);
        cpt++;
        if (cpt == 10)
           encore=false;
       pthread_mutex_unlock(&mutex);
      }	
      pthread_exit(0);
    }
     
    void *stop (void *arg)
    {
      bool cancel=false;  
      while (!cancel)
      {	pthread_mutex_lock(&mutex);
    	if (cpt < 5)
    	{       cancel=true;
    		printf("On arrete le thread 1\n");
      		pthread_cancel(thread1);
    	}
    	pthread_mutex_unlock(&mutex);
      }
      pthread_exit(0);
    }
    Il ne faut pas négliger le négligeable !!!

  2. #2
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    salut
    à mon avis ton thread1 se termine avant que linux ait eu le temps de créer le thread2

    fait compter ton thread1 jusqu'a 10000 par exemple (ou + si ça suffit pas)
    et thread2 stoppe thread1 quand c=5000


    tu aurais du poser cette question dans le forum linux

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    merci ca m'a aidé
    effectivement il faut attendre plus longtemps pour que ca marche
    ++
    Il ne faut pas négliger le négligeable !!!

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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