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!