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 :

Mutex avec pthread


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut Mutex avec pthread
    Bonjour,

    J'utilise un programme principal qui lance un seul thread.
    Le programme principal et le thread se déroulent ensuite en parallèle.

    Ma question est la suivante :
    Est-ce que je peux utiliser un mutex pour définir une zone critique (délimitée de pthread_mutex_lock jusqu'à pthread_mutex_unlock ) à la fois dans le programme principal et dans le thread ?
    Le but, classiquement, est que le programme principal et le thread n'accèdent pas en même temps à des variables partagées.
    Mais est-ce que ceci fonctionne bien entre 1 thread et le programme principal ou est-ce que le principe n'est possible que entre 2 threads ?

    Merci pour votre réponse.

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Le "programme principal" n'est pas simplement "le premier thread" créé ?

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Habituellement (du moins dans les exemples que j'ai vus), "le programme principal" lance plusieurs threads et ne fait plus rien : il attend simplement que les threads se terminent : pthread_join().
    Dans mon cas : le programme lance un thread unique et continue ensuite en boucle pendant la vie du thread.
    Mais c'est peut être un problème de vocabulaire : est-ce que l'on appelle aussi un thread le programme principal (celui qui démarre avec la fonction main) ?
    Vocabulaire ou pas, je voudrais savoir si les mutex fonctionnent bien efficacement entre les 2 exécutions tel que décrit ?

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Je viens de regarder vite fait sur Internet. Je vois que ça parle de "thread principal" pour décrire le contexte où s'exécute main(). Et j'ai aussi vu un code où le main() travaille avec un mutex qu'il partage avec un 2nd thread. Voir : http://stackoverflow.com/questions/5...ferent-threads

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Merci pour ton aide, c'est curieux dans le dernier listing du lien : le mutex est locké avant même que le thread ne soit créé !

    Bon, d'après toi il n'y a pas de souci alors ?

  6. #6
    Membre actif

    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 87
    Points : 217
    Points
    217
    Par défaut
    Citation Envoyé par nanosoft Voir le message
    Bonjour,

    Mais est-ce que ceci fonctionne bien entre 1 thread et le programme principal ou est-ce que le principe n'est possible que entre 2 threads ?
    Bonjour,

    Je pense qu'il vaut mieux garder le programme principal comme une tache qui ne sert qu'à lancer tes taches, et rien d'autres, après au lieu d'ajouter du code applicatif dans le programme principal, tu crée un deuxième threads ou tu y ajoutes ce que le programme principal fait avec les ressources partagées...Et comme ça la protection des variables sera gérée entre les deux threads.

    Voilà c'est juste une proposition concernant le design

    cordialement,

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Le programme principal est un thread, au même titre que n'importe quel autre thread.
    Utiliser un mutex entre un thread et le thread principal ne pose aucun problème.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Utiliser un mutex entre un thread et le thread principal ne pose aucun problème.
    Bon voila qui me rassure, merci dinobogan !

    Voilà c'est juste une proposition concernant le design
    Oui o.meryem, c'était l'architecture de mon premier design mais j'ai changé pour des questions de priorité entre threads.
    Dans mes essais j'ai une meilleure réactivité sur le thread principal, mais je ne suis pas sur de ma gestion des priorités, je vais faire des essais complémentaires.

    Merci à tous.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/10/2019, 14h58
  2. Dll manquante avec pthread lib
    Par uriotcea dans le forum C
    Réponses: 15
    Dernier message: 05/08/2009, 07h22
  3. parallelisation avec Pthread
    Par sirerose dans le forum C++
    Réponses: 1
    Dernier message: 09/09/2008, 16h43
  4. Tri fusion avec pthread
    Par Sh4dow49 dans le forum Débuter
    Réponses: 34
    Dernier message: 22/06/2008, 21h02
  5. Problème de mutex avec Waitforsingleobject non-bloquant
    Par rvzip64 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 03/11/2005, 11h02

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