Passare i parametri a pthread_create [closed]

-4

Ho una struttura chiamata graph.

grafico * G;

Ora creo memoria della dimensione della struttura usando malloc e il puntatore iniziale è memorizzato nel puntatore G.

G = (graph *) malloc (sizeof (graph));

La mia domanda è: come posso passare questo argomento come argomento a pthread_create?

pthread_create (& th, NULL, function_call,?);

    
posta Nandini Singhal 18.03.2015 - 06:06
fonte

1 risposta

-1

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;
    
risposta data 18.03.2015 - 07:47
fonte

Leggi altre domande sui tag