Mephisto Posté(e) le 8 mai 2008 Partager Posté(e) le 8 mai 2008 j'ai une question existentielle a vous soumettre... je pense avoir correctement utilise les thread, sauf que... ben ca marchew pas j'ai bien les messages des printf de ma boucle, pas d'erreurs, et pourtant j'ai pas ceux qui devraient sortir de monthread() vous avez une idee d'ou pourrait venir mon probleme ? void *monthread(void *data) { t_ply *p; p = (t_ply *)data; write(1, "tata\n", 5); printf("thread:%i\n", p->p); } void play(t_ply *p, int n) { int i; t_ply *m; pthread_t threads[n]; m = p; while (m) { printf("pthread_create: %i\n", m->p - 1); if ((i = pthread_create(&threads[m->p - 1], NULL, monthread, (void *)m))) { printf("error (#%i) while creating thread #%i\n", i, m->p); exit(-1); } m = m->next; } } merci pour votre aide ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 8 mai 2008 Partager Posté(e) le 8 mai 2008 chez moi ca "marche" en commentant l'appel a "write" (je sais pas dans quoi t'écrit '^^) en ajoutant un "return 0;" à monthread parce que mon compilo me crie qu'il attend son void * Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 9 mai 2008 Auteur Partager Posté(e) le 9 mai 2008 le write ecrit sur le term (1), c'etait pour etre sur que le probleme ne venait pas du printf qui aurait ete trop long a afficher quelque chose quoi qu'il en soit, ca tourne toujours pas grossierement, je compile avec gcc *.c -W -Wall -pedantic -ansi -o toto -lthr sous freebsd pour info, comment tu fais ? (a moins que t'as une meilleure idee sur la cause du probleme ?) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spaz001 Posté(e) le 9 mai 2008 Partager Posté(e) le 9 mai 2008 j' ai compilé sous VS 2k8 '^^ ( honte sur moi ) mais je ne vois aucune raison pour que ca ne marche pas, peut etre à part le return. Et fais attention avec write, la dernière fois que j'avais regardé, il était pas très très thread safe. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 9 mai 2008 Auteur Partager Posté(e) le 9 mai 2008 j'avais deja enleve le write et rajoute le return sans succes... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Mephisto Posté(e) le 9 mai 2008 Auteur Partager Posté(e) le 9 mai 2008 ca yest, j'ai trouve ! en rajoutant un usleep() dans le for qui cree les thread, ca passe ! merci quand meme pour ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.