Salve a tutti, vorrei sapere se sia possibile distruggere e ricreare un semaforo oppure reinizializzare il semaforo ai valori di default.
Ho una cosa del genere:
codice:
sem_t vuoto, pieno;
int buffer_scrittura;
int buffer_lettura;
int buffer[DIM_BUFFER];
buffer_scrittura = 0;
buffer_lettura = 0;
sem_init(&vuoto, 0, DIM_BUFFER);
sem_init(&pieno, 0, 0);
uso questo codice per scrivere nel buffer:
codice:
sem_wait(&vuoto);
pthread_mutex_lock(&mutex_buffer);
buffer[buffer_scrittura] = dato;
buffer_scrittura= (buffer_scrittura + 1) % DIM_BUFFER;
pthread_mutex_unlock(&mutex_buffer);
sem_post(&pieno);
uso questo invece per leggere dal buffer:
codice:
sem_wait(&pieno);
pthread_mutex_lock(&mutex_buffer);
valore_letto=buffer[buffer_lettura];
buffer_lettura= (buffer_lettura + 1) % DIM_BUFFER;
pthread_mutex_unlock(&mutex_buffer);
sem_post(&vuoto);
io vorrei svuotare il buffer e far in modo che i semafori tornino ai valori di default.. cioè fare una cosa del genere:
buffer_scrittura = 0;
buffer_lettura = 0;
sem_init(&vuoto, 0, DIM_BUFFER);
sem_init(&pieno, 0, 0);
sapete se è possibile??