[bglug] Reagire al deadlock in multithtread app

mlpita@bergamo3.it mlpita@bergamo3.it
Mar 29 Nov 2005 12:24:01 CET


Ciao a tutti,
Ho due programmi, uno ad alta priorità che deve sempre girare ed uno a bassa 
priorità che mostra i dati elaborati dal primo. I due processi comunicano con 
SharedMemory (shmget, shmat) con accesso sincronizzato da un Named Semaphore 
condiviso (sem_open, sem_post, sem_wait).
Entrambi i processi hanno un thread timerizzato in cui leggono o scrivono i 
dati sulla SharedMemory. All' inizio ed alla fine della funzione 
"DoTimedWork" del thread vengono fatte la sem_wait e la sem_post.
Nel caso che la seconda applicazione (visualizzatore) si impianti durante la 
lettura della memoria condivisa all' interno del blocco di sincronismo senza 
rilasciare il semaforo, come posso fare ad evitare che il primo processo se 
ne accorga ed invalidi il semaforo per poi ricrearlo?
Ho cercato su internet ma non ho trovato nulla a riguardo, se qualcuno è in 
grado di aiutarmi....
Grazie, Diego


Maggiori informazioni sulla lista bglug