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?
Ah, ovviamente ho provato anche il seguente codice: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; }
Ma anche con void *param, come parametro non c'è verso di farlo funzionare. Come si passano più parametri ad un thread?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); }

Rispondi quotando