Ciao a tutti,
devo leggere da un file alcuni numeri con 4 thread, sincronizzandone l'accesso tramite mutex. Supponendo che il file venga passato come argomento da linea di comando, mi chiedevo se i seguenti modi per condividere il mutex e il file pointer sono equivalenti:

1) Far si che mutex e file pointer al file da leggere siano variabili globali

codice:
#include <....>

pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
FILE *fp;

int main(int argc,char *argv[]){

    fp=open_file(argv[1]);
}
2)creare una struttura dati per contenere le info necessarie ai thread e poi procedere in questo modo:

codice:
#include <....>

struct data
{
   pthread_t tid;
   pthread_mutex_t *ptmx;
   FILE *f;

  .....
}

int main(int argc,char* argv[])
{
   FILE *fp=open_file(argv[1]);
   struct data td[5];
   pthread_mutex_t mtx;

   pthread_mutex_init(&mtx,NULL)

   //associazione con i campi della struttura dati
   for(i=0;i<5;i++)
   {
      td[i].f=fp;
      td[i].ptmx=&mtx;
   }

   ....
}
grazie
PS. ho risportato solo le parti di codice più salienti, quindi non fate caso se manca il controllo degli errori!