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
2)creare una struttura dati per contenere le info necessarie ai thread e poi procedere in questo modo:codice:#include <....> pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; FILE *fp; int main(int argc,char *argv[]){ fp=open_file(argv[1]); }
graziecodice:#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; } .... }
PS. ho risportato solo le parti di codice più salienti, quindi non fate caso se manca il controllo degli errori!

Rispondi quotando
