Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    attesa temporizzata semafori linguaggio c

    Salve a tutti,
    ho un problema con l'utilizzo dei semafori nel linguaggio C

    ho scritto una soluzione in linguaggio C al problema classico produttori/consumatori
    il programma compila e funziona

    ora il problema è che devo verificare che un consumatore che tenta di leggere da un buffer vuoto resti in attesa di una scrittura da parte di un produttore.

    Ovviamente questo deve avvenire perchè le letture devono essere bloccanti.

    in altre parole quando un thread consumatore effettua una lettura deve rimanere in attesa, e questo so come farlo. Quello che non so fare è testare che tutto funzioni correttamente.

    l mio prof ha detto di mettere un flag (che viene modificato se il consumatore effettua la lettura) e verificare, dopo un tempo stabilito di attesa che il flag non è cambiato...



    in altre parole devo fare in modo che dopo un tempo stabilito (abbastanza grande da essere sicuro che il thread è sospeso indefinitivamente) il consumatore deve bloccarsi e restituire un valore e il controllo deve passare al processo main (che controllerà il flag)

    io ho usato i sem_t con i threads in C..ho cercato parecchio e ho trovato la primitiva sem_timedwait(semaforo, timespec)
    ora le domande sono:
    questa primitiva appartiene ai posix threads di linux (gira su qualsiasi linux)? (lo chiedo perchè a lezione questa primitiva non è stata presentata)
    -come va utilizzata? in particolare il time spec indica un tempo assoluto, come posso cambiarlo in un intervallo di tempo (tipo 10 secondi a partire da adesso)

    ho già girato parecchio in rete, ma non sono ancora riuscito a venirne a capo...
    chiedo scusa se ho scritto errori, e vi ringrazio per ogni eventuale risposta

  2. #2
    man mano che cerco ho trovo nuovi spunti

    qui ho trovato questa frase

    The current absolute system time can be retrieved as a timeval structure using the software clock interface gettimeofday(). The timeval structure can easily have a delta value added to it and be converted to a timespec structure.

    solo che non riesco a trovare come si fa....

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 © 2024 vBulletin Solutions, Inc. All rights reserved.