il prototipo di pthread_create è
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
Poiché il parametro arg è un vuoto * puoi semplicemente scrivere
pthread_create(&th,NULL,function_call, G);
Tuttavia, è function_call (), dovrai lanciare il parametro arg sul tipo reale.
o:
function_call(void *arg)
{
graph *tmp_G;
tmp_G = arg;
// then I use tmp_G as G
}
o
((graph *)arg)->the_field_of_G;
Quindi sarai in grado di utilizzare i parametri di cui hai bisogno.
Se vuoi dare più di un parametro alla tua funzione, devi semplicemente creare una nuova struttura che conterrà tutti i tuoi parametri, quindi lanciarla come sopra per usarli nel tuo function_call ().
ecco un esempio:
typedef struct s_my_function_call_arg
{
graph *G;
int arg2;
char *arg3;
} t_my_function_call_arg;