Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420

    [C - linux - POSIX] reinizializzare un semaforo . Possibile?

    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??
    the sALIEN

  2. #2
    Ciao, non ho capito perche' esegui

    sem_init(&vuoto, 0, DIM_BUFFER);

    il terzo parametro serve a indicare quanti processi possono entrare nel semaforo, sei sicuro che DIM_BUFFER debba stare li'?

    In ogni caso se non ci sono processi all'interno di un semaforo, il semaforo mantiene i valori che gli hai impostato alla creazione per cui non c'e' alcuna ragione (che mi venga in mente al momento) per doverlo "resettare".

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    il terzo parametro non serve a inizializzare il semaforo ad un valore preciso?

    comunque grazie lo stesso ma sono riuscito a risolvere evitando di fare tutto ciò
    the sALIEN

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.