J'ai besoin de passer plusieurs arguments à une fonction que je voudrais appeler sur un thread séparé. J'ai lu que la manière typique de le faire est de définir une structure, de lui transmettre un pointeur et de la déréférencer pour les arguments. Cependant, je ne parviens pas à faire fonctionner cela:
#include <stdio.h>
#include <pthread.h>
struct arg_struct {
int arg1;
int arg2;
};
void *print_the_arguments(void *arguments)
{
struct arg_struct *args = (struct arg_struct *)args;
printf("%d\n", args -> arg1);
printf("%d\n", args -> arg2);
pthread_exit(NULL);
return NULL;
}
int main()
{
pthread_t some_thread;
struct arg_struct args;
args.arg1 = 5;
args.arg2 = 7;
if (pthread_create(&some_thread, NULL, &print_the_arguments, (void *)&args) != 0) {
printf("Uh-oh!\n");
return -1;
}
return pthread_join(some_thread, NULL); /* Wait until thread is finished */
}
Le résultat pour cela devrait être:
5
7
Mais quand je le lance, j'obtiens:
141921115
-1947974263
Quelqu'un sait ce que je fais de mal?