[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