Bonjour,
Voici l'en-tête de la fonction pthread_create :
int pthread_create(pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg);
Le dernier argument, void * arg, sert à passer l'argument dans ta fonction. Pour passer plusieurs arguments, utilise un pointeur sur structure.
Si tu dois passer en paramètre le argv[1] correspondant aux arguments du main, ton code pourrait ressembler à ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
void* maFonction(void*);
int main(int argc, char *argv[])
{
pthread_t thread;// On crée un thread
/* passe l'argument à pthread_create */
pthread_create (&thread, NULL, maFonction, (void *)argv[1]);// Permet d'exécuter le fonction maFonction en parallèle
// Attend la fin tu thread créé
pthread_join(thread, NULL);
return 0;
}
void* maFonction(void*)
{
//je doit effectuer le traitement sur l'argument ici
} |
J'espère avoir répondu à ta question.
Partager