[bglug] Reagire al deadlock in multithtread app

moreno 1 moreno@mediacom.it
Mar 29 Nov 2005 13:10:07 CET


Ciao

mlpita@bergamo3.it ha scritto:
> 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
>  
>   
Così ad occhio potresti modificare i dati inviati aggiungendo il PID del 
secondo programma.
Il primo programma periodicamente verifica lo stato del secondo 
programma attraverso il suo PID e se è morto ricrea il semaforo.


Ciao Ciao Moreno




Maggiori informazioni sulla lista bglug