THREADS - utilisation de pthread.h - C - Programmation
Marsh Posté le 25-05-2006 à 19:10:18
jipo a écrit : |
Des variables globales...
Un peu de lecture...
http://mapage.noos.fr/emdel/pthreads.htm
Ensuite, pose des questions si (encore) nécessaire...
Marsh Posté le 25-05-2006 à 19:20:37
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
Marsh Posté le 25-05-2006 à 23:54:13
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 ?
Marsh Posté le 26-05-2006 à 00:00:58
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 ?
Marsh Posté le 26-05-2006 à 00:18:07
Emmanuel Delahaye a écrit : |
Salut.
J'ai jeté un rapide coup d'oeil. C'est pas mal, mais j'ai quelques remarques:
Citation : |
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 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 : |
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 : |
http://cm.bell-labs.com/who/dmr/chist.html
Marsh Posté le 26-05-2006 à 02:25:45
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 ?
jipo a écrit : |
OUI ..
Mes questions : mes reponses ... c'est tellement plus simple ...
Marsh Posté le 26-05-2006 à 09:29:00
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 ... |
http://www.opengroup.org/pubs/onli [...] _join.html
C'est un appel bloquant.
Marsh Posté le 25-05-2006 à 18:29:54
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 :
: la tache en thread qui lancera le traitement
: 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 é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)