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:
uso questo codice per scrivere nel buffer: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);
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:
io vorrei svuotare il buffer e far in modo che i semafori tornino ai valori di default.. cioè fare una cosa del genere: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);
buffer_scrittura = 0;
buffer_lettura = 0;
sem_init(&vuoto, 0, DIM_BUFFER);
sem_init(&pieno, 0, 0);
sapete se è possibile??

Rispondi quotando
