Salve a tutti,
ho questo semplice codice che richiama un thread che dovrebbe stampare due valori contenuti nella struct che prende come parametro, ma stampa due valori a caso. Non capisco perché.
Qualcuno saprebbe aiutarmi?
codice:
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
typedef struct{
int a;
int b;
} int_struct;
int status;
void *test_thread(int_struct param)
{
printf("Thread active\n");
printf("Value a: %d\n",param.a);
printf("Value b: %d\n",param.b);
pthread_exit((void *)&status);
}
int main (int argc, char *argv[])
{
int i;
pthread_t tid;
void *status;
int_struct *param;
param = malloc(sizeof(int_struct));
param->a = 2;
param->b = 3;
i=pthread_create(&tid, NULL, test_thread, ¶m);
if (i) {
printf("cannot create thread for error %d\n", i);
exit(-1);
}
pthread_join(tid, &status);
return 0;
}
Ah, ovviamente ho provato anche il seguente codice:
codice:
void *test_thread(void *param)
{
printf("Thread active\n");
printf("Value a: %d\n",param->a);
printf("Value b: %d\n",param->b);
pthread_exit((void *)&status);
}
Ma anche con void *param, come parametro non c'è verso di farlo funzionare. Come si passano più parametri ad un thread?