Più processi consapevoli l'uno dell'altro

-1

Spero che tu possa aiutarmi con questo, ho cercato molto e mi sono davvero confuso su cosa fare qui.

Sto costruendo un programma in C e ho bisogno di eseguirlo più volte di quanto ho bisogno.

Quindi sarà come sotto,

processo 1 gestisce tutte le righe sul test tabella DB dove process_flag = 1
processo 2 gestisce tutte le righe sul test tabella DB dove process_flag = 2
processo 3 gestire tutte le righe sul test tabella DB dove process_flag = 3
e così via

Come posso rendere i processi consapevoli l'uno dell'altro, quindi se il processo 3 va giù allora i processi 2 e amp; 3 inizia a lavorare su process_flag = 3?

    
posta poly 24.03.2012 - 16:00
fonte

2 risposte

1

Il design generale di tale architettura è comunicazione tra processi .

Si basano principalmente su:

  • memoria condivisa,
  • code di messaggi,
  • semafori,
  • file,
  • sottostanti meccanismi specifici del SO come segnali Unix o eventi Apple.
risposta data 28.03.2012 - 09:37
fonte
5

La soluzione migliore potrebbe essere quella di mantenere tutti i processi inconsapevoli l'uno dell'altro e utilizzare un processo watchdog / supervisione separato per monitorarli e riavviare automaticamente quelli che vanno giù. Esempi sono Supervisor o perp .

Se vuoi che si comporti esattamente come dici tu, puoi fare in modo che ogni processo memorizzi il pid nel database (o in un file), o inviare un heartbeat periodicamente (memorizzando il tempo dell'ultima attività nel database o toccando un file su disco). La tabella / file contiene anche il process_flag. Quindi, tra un processo e l'altro, gli altri processi potrebbero controllarlo e vedere se uno qualsiasi dei pid non è più in esecuzione processi o se l'heartbeat non è stato aggiornato in un istante. Quindi potevano "rivendicare" quel process_flag e aggiornare la riga / file atomicamente.

Ma ... se fai tutto ciò che stai facendo in pratica ogni processo monitora un processo. Quindi, per semplificare, potresti dividere quel codice di monitoraggio in un processo separato. Ma in sostanza hai scritto una sostituzione per uno degli strumenti esistenti che avresti potuto usare.

Una preoccupazione che le persone hanno sull'utilizzo di un watchdog è cosa fare se si blocca da solo. Una soluzione è avere un cron che lo avvii periodicamente se non è più in esecuzione.

    
risposta data 24.03.2012 - 16:45
fonte

Leggi altre domande sui tag