Je suis en train de donner un sens à un programme:pthread_create de référence non définie
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
int main(int argc, char** argv) {
volatile double fShared = 0.0;
// create pthread structures - one for each thread
pthread_t t0;
pthread_t t1;
//Arbitrary pointer variables - void* is a pointer to anything
void *thread_res0;
void *thread_res1;
int res0,res1;
//create a new thread AND run each function
// we pass the ADDRESS of the thread structure as the first argument
// we pass a function name as the third argument - this is known as a FUNCTION pointer
// you might want to look at the man pages for pthread_create
res0 = pthread_create(&t0, NULL, do_this, (void*)"");
res1 = pthread_create(&t1, NULL, do_that, (void*)"");
// Two threads are now running independently of each other and this main function
// the function main is said to run in the main thread, so we are actually running
// The main code can now continue while the threads run - so we can simply block
res0 = pthread_join(t0, &thread_res0);
res1 = pthread_join(t1, &thread_res1);
printf ("\n\nFinal result is fShared = %f\n",fShared);
return (EXIT_SUCCESS);
}
Il convient de noter que do_this et do_that sont des fonctions créées plus tôt dans le programme. Je reçois les erreurs suivantes:
[email protected]:~/Programs$ Homework2OS.c
/tmp/cceiRtg8.O: in function 'main'
Undefined reference to 'pthread_create'
Undefined reference to 'pthread_create'
Undefined reference to 'pthread_join'
Undefined reference to 'pthread_join'
Nous avons reçu ce bit de code à corriger. J'ai trouvé ailleurs le format pour le constructeur pthread_create. Ai-je besoin de le définir au-dessus du principal? J'avais l'impression qu'il était importé avec la bibliothèque.
Je me risquerais aussi à deviner que cela a quelque chose à voir avec le quatrième paramètre? Je comprends que le premier paramètre est l'emplacement du thread (défini ci-dessus), le second est NULLed, le troisième est l'appel de la fonction, mais je ne comprends pas très bien ce que le quatrième paramètre est censé être.
Qu'est-ce qui ne va pas?
Montrez votre commande de compilation, et votre '# directives include'. Lisez quelques [tutoriel pthread] (https://computing.llnl.gov/tutorials/pthreads/). Quel est votre système d'exploitation? Lisez [pthread_create (3)] (http://man7.org/linux/man-pages/man3/pthread_create.3.html) –
passez l'option '-lpthread' à votre compilateur – StoryTeller
En fait vous devriez passer' -pthread' à votre compilateur 'gcc', puis la bibliothèque' -lpthread' serait liée –