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 :

Attendre la fin de tous les threads


Sujet :

POSIX C

  1. #21
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 325
    Points : 3 768
    Points
    3 768
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Je viens d'effectuer des tests supplémentaires, avec des fonctions contenant des pthread_create, qui lancent d'autres fonctions contenant eux-mêmes des pthread_create. Cette fois-ci en plaçant pthread_exit(NULL) à la fin de la fonction main(), exemple :
    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
    #include <pthread.h>
    #include <stdlib.h>
    #include <stdio.h>
     
    void* affiche1(void* param){
        int i = 0;
        while(i < 6) {
            printf("Coucou\n");
            sleep(1);
            i++;
        }
    }
     
     
    void* affiche(void* param){
        int i = 0;
     
        pthread_t t2;
        pthread_create(&t2, NULL, affiche1, NULL);
        while(i < 3) {
            printf("Hello\n");
            sleep(1);
            i++;
        }
    }
     
     
     
    int main(){
        affiche(NULL);
        pthread_exit(0);
    }
    Ici pas de DETACHED thread, et on attend que tous les threads exécutés dans le main se terminent proprement avant de quitter le programme.
    Si je devais donner un définition au comportement de pthread_exit, je dirais :
    Lorsque le exit du main est remplacé par pthread_exit, on attend que le processus a.out (nom par défaut du binaire), ait terminé d'exécuter tous ses threads avant que le programme ne se termine.

    Autrement je ne lis cette définition presque nulle part. Sauf dans celui-ci qui y ressemble (merci Bktero) :
    To allow other threads to continue execution, the main thread should terminate by calling pthread_exit() rather than exit(3).
    http://linux.die.net/man/3/pthread_exit

  2. #22
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 593
    Points
    41 593
    Par défaut
    Ceci marchera comme tu le veux tant que tu n'utiliseras pas de bibliothèque créant des threads qui attendent indéfiniment (bibliothèque de thread pool, etc.)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Comment arrêter tous les Threads ?
    Par Ceubex dans le forum Général Java
    Réponses: 9
    Dernier message: 04/01/2011, 15h10
  2. Réponses: 8
    Dernier message: 19/11/2010, 12h01
  3. Jonas freezé, tous les threads sont occupés
    Par Bouhaouala dans le forum JOnAS
    Réponses: 1
    Dernier message: 08/11/2009, 00h36
  4. Réponses: 7
    Dernier message: 04/02/2008, 17h49
  5. Comment attendre que tous les thread lancés soient morts pour lancer une action.
    Par rgesnot dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 31/03/2007, 21h27

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