Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1468 connectés 

  FORUM HardWare.fr
  Programmation
  C

  THREADS - utilisation de pthread.h

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

THREADS - utilisation de pthread.h

n°1375007
jipo
Kamoulox !
Posté le 25-05-2006 à 18:29:54  profilanswer
 

Bonjour,
 
J'ai une interface graphique (XMotif) :
En plusieurs étapes, on saisit des parametres dans la fenetre principale.
A la dernière étape, on appelle la fonction qui effectue le traitement sur la base des paramètres. Ce traitement peut durer plusieurs heures voir plusieurs jours.
 
Apres le lancement du traitement, il y a un bouton "STOP" dans le GUI qui doit permettre d'arreter le traitement.
 
Pour mettre en oeuvre tt cela, je décide d'utiliser les threads via les fonctions suivantes :
 

Code :
  1. static void * traitement ( void * p_data)
  2. { ... }


: la tache en thread qui lancera le traitement
 

Code :
  1. pthread_create( &tth, NULL, traitement, NULL);


: la création du thread
 
1 / Est-ce une obligation d'utiliser la fonction pthread_join ( ... ) ?
Imaginons que la fonction appelée dans le thread mette à jour une variable globale pour indiquer au GUI que le traitement est terminé. Dans ce cas je pense que l'utilisation de pthread_join n'est pas utile. Qu'en pensez-vous ?
 
2/ Est-ce que dans un programme C un la tache d'un thread peut voir et accéder les variables globales auxquelles accède le programme qui l'a créé ?
 

Message cité 2 fois
Message édité par jipo le 25-05-2006 à 18:52:45

---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
mood
Publicité
Posté le 25-05-2006 à 18:29:54  profilanswer
 

n°1375028
Emmanuel D​elahaye
C is a sharp tool
Posté le 25-05-2006 à 19:10:18  profilanswer
 

jipo a écrit :


Pour mettre en oeuvre tt cela, je décide d'utiliser les threads via les fonctions suivantes :


Des variables globales... [:vomi]
 
Un peu de lecture...
 
http://mapage.noos.fr/emdel/pthreads.htm
 
Ensuite, pose des questions si (encore) nécessaire...

Message cité 1 fois
Message édité par Emmanuel Delahaye le 25-05-2006 à 19:11:21

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1375032
jipo
Kamoulox !
Posté le 25-05-2006 à 19:20:37  profilanswer
 

Merci Emmanuel,
 
Je pensais bien et me doutais que ce serait toi qui répondrait le premier à ce topic ...
 
J'avais déjà lu ta page trouvée dans un autre topic. Pour autant je ne suis pas sur des réponses aux questions que je pose ci-dessus.
Pour ce qui est des variables globales, il s'agit d'un long passif dont je ne suis pas responsable ...  
 
Voilà donc les questiopns restent posées  :jap:  


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1375250
jipo
Kamoulox !
Posté le 25-05-2006 à 23:54:13  profilanswer
 

De plus je me demande : est-ce qu'une variable accedeee par un thread peut bloquer un autre qui accede à la meme variable en meme temps, qd on utilise pas les mutex ?


---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1375254
Emmanuel D​elahaye
C is a sharp tool
Posté le 26-05-2006 à 00:00:58  profilanswer
 

jipo a écrit :

De plus je me demande : est-ce qu'une variable accedeee par un thread peut bloquer un autre qui accede à la meme variable en meme temps, qd on utilise pas les mutex ?


Non, sinon à quoi serviraient les sémaphores ?
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1375268
simple_stu​pid
Keep It Simple Stupid
Posté le 26-05-2006 à 00:18:07  profilanswer
 

Emmanuel Delahaye a écrit :


 
http://mapage.noos.fr/emdel/pthreads.htm
 
Ensuite, pose des questions si (encore) nécessaire...


 
Salut.
J'ai jeté un rapide coup d'oeil. C'est pas mal, mais j'ai quelques remarques:
 

Citation :


Les essais ont été faits sous Windows 98 avec Dev-C++ et sa bibliothèque pthread. L'ordonnanceur de Windows étant préemptif, les abérrations de fonctionnement sont claires et évidentes. Les essais réalisés sous Linux embarqué (Kernel 2.4 pour Power PC) sont moins parlants, car l'ordonnanceur n'est pas préemptif.


 
Je comprends pas.
Ca fait un moment que l'ordonnanceur de linux est préemptif, en tout cas le 2.4 l'était.
Ce qui a été introduit dans le 2.6, c'est la préemption en espace noyau (preemptive kernel), c'est-à-dire des appels système.
 
 
Et je vois ça aussi:
 

Citation :


Un caractère est une valeur numérique qui représente un glyphe visible ('A', '5', '*' etc.) ou non (CR, LF etc.). Un caractère est de type int. Cependant, sa valeur tient obligatoirement dans un type char.
 
Un objet de la taille d'un byte peut recevoir la valeur de n'importe quel caractère.


 
Un caractère est un type entier (integer) char, pas int.
La preuve, c'est qu'une chaîne de caractères est de type char [].
 
Par contre, une constante caractère est un entier.
C'est pour ça que sizeof('z') ne renvoie pas 1.
 

Citation :


Le langage C n'a à voir ni avec UNIX ni avec POSIX.


 
Ouais, on est pas loin du troll là.
Le C a quand même été inventé par les pères d'Unix, pour Unix. D'ailleurs la dernière partie du K&R traite des appels systèmes Unix.
 

Citation :


The C programming language was devised in the early 1970s as a system implementation language for the nascent Unix operating system.


 
http://cm.bell-labs.com/who/dmr/chist.html


Message édité par simple_stupid le 26-05-2006 à 14:17:15
n°1375316
jipo
Kamoulox !
Posté le 26-05-2006 à 02:25:45  profilanswer
 

jipo a écrit :


1 / Est-ce une obligation d'utiliser la fonction pthread_join ( ... ) ?
Imaginons que la fonction appelée dans le thread mette à jour une variable globale pour indiquer au GUI que le traitement est terminé. Dans ce cas je pense que l'utilisation de pthread_join n'est pas utile. Qu'en pensez-vous ?


 
NON : dans mon cas la seule procedure principale crée un seul thread pour gerer le traitement lourd pendant que la procedure principale continue à gerer le GUI . l'utilisation de pthread_join bloquerait le GUI sinon ...
CONFIRMER ?

 

jipo a écrit :


2/ Est-ce que dans un programme C un la tache d'un thread peut voir et accéder les variables globales auxquelles accède le programme qui l'a créé ?


OUI ..
 
Mes questions : mes reponses ... c'est tellement plus simple ...  [:audi]

Message cité 1 fois
Message édité par jipo le 26-05-2006 à 02:26:32

---------------
"Comme des pommes d'or sur des ciselures d'argent, Ainsi est une parole dite à propos" (Proverbes de Salomon)
n°1375339
simple_stu​pid
Keep It Simple Stupid
Posté le 26-05-2006 à 09:29:00  profilanswer
 

jipo a écrit :

NON : dans mon cas la seule procedure principale crée un seul thread pour gerer le traitement lourd pendant que la procedure principale continue à gerer le GUI . l'utilisation de pthread_join bloquerait le GUI sinon ...
CONFIRMER ?

 


 
http://www.opengroup.org/pubs/onli [...] _join.html
 
C'est un appel bloquant.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  THREADS - utilisation de pthread.h

 

Sujets relatifs
Utilisation particulière de VB2005 ExpressUtilisation des classes pour créer des boules de billard
[.net c++] utilisation de ReadFile et WriteFileProblèmes de variables communes à différents Threads
utilisation de mouselistener[Résolu] Utilisation SharedObject
[Flash] Utilisation de sharedObject, où sont les cookies ?!utilisation de linterface shape
Inno Setup (utilisation de la fonction WorkingDir)Probleme syntaxe thread librairie pthread
Plus de sujets relatifs à : THREADS - utilisation de pthread.h


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR