Pthread problème état joinable

Pthread problème état joinable - C - Programmation

Marsh Posté le 23-01-2007 à 17:18:28    

Bonjour,  
( sous linux red hat).
Je suis fasse à un problème trés étrange je n'arrive pas à avoir le fonctionnement voulu avec des pthreads en état join.
Je m'explique, le processus lançant le thread ne l'attend pas il continu son bonhomme de chemin.  
Pourtant j'ai essayer de diverses manières rien y fait.
Le même programme fonctionne sous mandrake sans problème.
je précise que j'ai parcouru le man et le net un certain nombre de fois mais rien trouvé sur ce probléme.
Si vous avez une piste je suis preneur.

Reply

Marsh Posté le 23-01-2007 à 17:18:28   

Reply

Marsh Posté le 23-01-2007 à 23:03:02    

Peux tu montrer ton code? Je ne suis pas sur de comprendre ce que tu veux faire.

Reply

Marsh Posté le 24-01-2007 à 09:13:14    

ben pthread_join

Reply

Marsh Posté le 24-01-2007 à 09:33:48    

Oui taz j'ai utilisé le pthread_join est c'est bien ce qui me posais problème ça ne fonctionnait pas comme voulu.
Bref j'ai revu mon code j'ai tout repris en plus simple et il c'est avéré qu'aucune des fonctions liés au thread sous la red hat que j'ai n'accpete un *bidul en parametre mais seulement le &bidul.  
(c'est stupide j'aurai du y penser avant mais bon trop bloqué dans le code et dans le man peut être.)  
De plus le paramétre NULL dans le pthread_join fonctionne bien alors que si je lui entre le "void **thread_return" ça bloque.
 
voila ce qui fonctionne du coup :  
pthread_attr_t thread_attr;
if (pthread_attr_init (&thread_attr) != 0) {
fprintf (stderr, "pthread_attr_init error" );
exit (1);
}
if (pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_JOINABLE)!= 0) {
fprintf (stderr, "pthread_attr_setdetachstate error" );
exit (1);
}
/*creation du thread*/
pthread_join(th,NULL);
 

Reply

Marsh Posté le 24-01-2007 à 10:10:36    

les thread sont joinables par défaut.
 
rien compris à ton histoire d'*, compile avec -Wall et apprend le C.

Reply

Marsh Posté le 27-01-2007 à 12:48:01    

Salut.  
Merci pour ta méprise Taz, pour ce qui est du * c'est juste que sur un système la fonction accepte un pointeur ou une adresse et que sur un autre n'accepte qu'une adresse.
Toutes mes excuses si je n'ai pas été suffisamment clair.  
Et pour ce qui est de l'état joinables par défaut si tu a suivi je le savais puisque j'ai lu le man comme beaucoup de monde.
Cependant lorsque j'utilisais la fonction pthread_join sans une initialisation manuel cela ne fonctionnais pas correctement sur tout les systèmes.
Il est appréciable de comprendre ce que dise les gens avant de juger leur niveau technique.
 
merci de vos réponses.

Reply

Marsh Posté le 27-01-2007 à 12:59:15    

yolas22 a écrit :

c'est juste que sur un système la fonction accepte un pointeur ou une adresse et que sur un autre n'accepte qu'une adresse.


Dans le cas d'un parametre, c'est la meme chose, pointeur et adresse.
 
Et si ce que tu veux dire, pour parler dans ton langage, c'est une fonction qui accepte "*bidule" et "&bidule", ca me parait plus que fumeux ... une fonction qui "devine" la nature de ce qu'on lui passe en parametre, ca n'existe pas.  
 
 

Reply

Marsh Posté le 29-01-2007 à 14:12:18    

Bien que je comprenne votre scepticisme, je ne peut pas passer un pointeur en parametre de certaine fonction sous red hat alors que ces même fonctions l'acceptent sous mandrake.
Il ne sert à rien d'épiloguer sur ce problème minime, je n'arrivais pas à savoir ou mon programme planter exactement voila tout.
Mais je suis d'accord les fonctions ne devineront pas la nature de ce qu'on leur donne en paramètre.
Pour ce qui est du bidul ce n'est qu'une représentation je ne pensais pas que ça générait autant.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed