voila je veux faire un truc multithread sous linux en utilisant libpthread, j'ai fait le code suivant:
//fichier de test pour voir comment marchent des threads
#include <stdio.h>
#include <pthread.h>
void *thread1(void* arg) {
int i;
printf("Le thread 1 demarre\n");
for(i=1;i<10;i++) printf("a= %d\n",i);
printf("Le thread 1 s'arrete\n");
}
void *thread2(void* arg) {
int i;
printf("Le thread 2 demarre\n");
for(i=1;i<10;i++) printf("b= %d\n",i);
printf("Le thread 2 s'arrete\n");
}
int main(void) {
pthread_t t1;
pthread_t t2;
int res;
printf("debut de la creation du premier pthread...\n");
res = pthread_create( &t1, NULL, &thread1, NULL);
printf("res=%d\tthreadID=0x%p\n",res,t1);
printf("debut de la creation du deuxieme pthread...\n");
res = pthread_create( &t2, NULL, &thread2, NULL);
printf("res=%d\tthreadID=0x%p\n",res,t2);
return 0;
}
je compile avec (gcc 3.4 et libpthread.so.0)
gcc threads.c -lpthread -o threads
ben ça me fait:
[squalyl@portable threads]$ ./threads debut de la creation du premier pthread... res=0 threadID=0x0xb7fe8bb0 debut de la creation du deuxieme pthread... res=0 threadID=0x0xb75e7bb0 [squalyl@portable threads]$
pour info ça fait pareil sous win32 avec libpthread-win32 et devcpp
le retour de pthread_create vaut 0 donc y'a pas eu d'erreur par contre le thread démarre pas.
le prototype concerné est:
extern int pthread_create (pthread_t *__restrict __threadp,
__const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *), void *__restrict __arg) __THROW
(variable d'identification, attributs, routine, arg)
le proto de routine est bien void *func(void*)
le man dit que les attributs peuvent être NULL (thread joignable), j'arrive pas à passer autre chose de toute
help! j'ai faux, mais à quel moment?
merci!