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
    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);
    }

  2. #2
    jmv
    jmv est d�connect�
    Membre chevronn� 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
    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
    Par d�faut
    merci ca m'a aid�
    effectivement il faut attendre plus longtemps pour que ca marche
    ++

+ 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