2016-10-15 2 views
1

Donc, dans mon exposé mon professeur nous a donné un code que nous devons utiliser dans notre prochaine mission, il est intitulé l'API de programmation Pthread et c'est le code:ne peut pas compiler API de programmation pthread

#include <pthread.h> 
#include <stdio.h> 
#define NUM_THREADS 5 

int main(int argc, char *argv[]) 
{ 

    int i; 
    pthread_t tid[NUM_THREADS]; 
    pthread_attr_t attr; 
    /*get default attributes */ 
    pthread_attr_init(&attr); 
    /* set scheduling algorithm to process or system */ 
    pthread_attr_setscope(&attr,PTHREAD_SCOPE_SYSTEM); 
    /* set scheduling policy -FIFO, RT or OTHERS*/ 
    pthread_attr_setschedpolicy(&attr,SCHED_OTHER); 
    /* create the threads */ 
    for (i=0;i<NUM_THREADS;i++) 
     pthread_create(&tid[i],&attr,runner,NULL); 
    /* join each thread*/ 
    for (i=0;i<NUM_THREADS;i++) 
     pthread_join(tid[i],NULL); 



} 
void *runner(void *param){ 
    printf("I am a thread\n"); 
    pthread_exit(0); 
} 

Cependant, lorsque Je compile ceci il me dit que le coureur n'est pas déclaré quand il est utilisé dans pthread_create. Est-ce censé être capable de fonctionner? Est-ce que je fais quelque chose de mal? si ce n'est pas censé fonctionner, comment puis-je utiliser cette API? J'ai regardé autour d'internet et il semble que beaucoup de conférences enseignent cette API mais je ne peux pas trouver comment l'utiliser, ce que j'essaye de faire avec cette API est de créer juste quelques threads simultanés avec un d'entre eux étant le parent et des trucs d'impression avec ces fils

+0

Essayez de déplacer le code de la fonction du coureur devant le code principal. – 4386427

Répondre

0

vous mettre avant la fonction définition principale:

void *runner(void *param); 

Sinon, au moment de la compilation coureur n'est pas défini parce que vous définissez à la fin. Mettre la définition sur le dessus et l'implémentation sur le fond résoudra le problème

(vous pouvez aussi simplement mettre votre implémentation de fonction sur le dessus)